Vue中render方法的使用详解


Posted in Javascript onJanuary 26, 2018

先说一下对官网上demo的个人理解:

<!DOCTYPE html>
<html>
<head>
  <title>Vue的render方法说明</title>
  <script src="vue.js"></script>
</head>
<body>
<div id="app">
  <child :level="1">
    hello world
  </child>
</div>

<script type="text/x-template" id="anchored-heading-template">
  <div>
    <h1 v-if="level === 1">
      <slot></slot>
    </h1>
    <h2 v-if="level === 2">
      <slot></slot>
    </h2>
    <h3 v-if="level === 3">
      <slot></slot>
    </h3>
    <h4 v-if="level === 4">
      <slot></slot>
    </h4>
    <h5 v-if="level === 5">
      <slot></slot>
    </h5>
    <h6 v-if="level === 6">
      <slot></slot>
    </h6>
  </div>
</script>

<script type="text/javascript">
Vue.component('child', {
  template: '#anchored-heading-template',
  props: {
    level: {
      type: Number,
      required: true
    }
  }
});
  new Vue({
    el: "#app"
  })
</script>
</body>
</html>

虽然使用template定义组件的方法非常的直观,但是这样会造成代码过长。可以使用render的方法

<!DOCTYPE html>
<html>
<head>
  <title>Vue的render方法说明</title>
  <script src="vue.js"></script>
</head>
<body>
<div id="app">
  <child :level="1">
    hello world
  </child>
</div>
<script type="text/javascript">
Vue.component('child', {
  render:function (createElement) {
    var body=this.$slots.default;
    //this.$slots返回了一个组件分发下来的元素和内容
    //this.$slots.default返回了具名的内容
    return createElement(
      'h'+this.level,
      //this.level是利用v-bind注入到组件中的level
      body
    )
  },
  //因为vue中组件父组件无法向子组件注入内容。所以我们需要通过
  //v-bind定义一个key,value向子组件注入内容。所要接收的值也需要在定义组件时的props属性中的定义一下
  props:{
    level:{

    }
  }
});
  new Vue({
    el: "#app"
  })
</script>
</body>
</html>

下面是一个slot具名分发的demo:介绍了creatElement的用法:

<!DOCTYPE html>
<html>
<head>
  <title>Vue的render方法说明</title>
  <script src="vue.js"></script>
</head>
<body>
<div id="app">
  <child>
    <p slot="header">this is header</p>
    <p slot="center">this is center</p>
    <p slot="footer">this is footer</p>
  </child>
</div>


<script type="text/javascript">
  Vue.component('child', {
    render: function (createElement) {
     var header=this.$slots.header;
     var center=this.$slots.center;
     var footer=this.$slots.footer;
//createElement第一个参数是标签名,第二个参数是值
     return createElement('div',[
       createElement('div', header),
       createElement('div', center),
       createElement('div', footer),
     ])
    }
  });
  new Vue({
    el: "#app"
  })
</script>
</body>
</html>

所创建的组件的demo结果如下:

Vue中render方法的使用详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery的鼠标拖动效果代码
May 30 Javascript
js 距离某一时间点时间是多少实现代码
Oct 14 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 Javascript
jquery获取radio值实例
Oct 16 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
JavaScript制作淘宝星级评分效果的思路
Jun 23 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
JavaScript闭包的简单应用
Sep 01 Javascript
js this 绑定机制深入详解
Apr 30 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
Jun 10 Javascript
Angular利用trackBy提升性能的方法
Jan 26 #Javascript
微信小程序版翻牌小游戏
Jan 26 #Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
Jan 26 #Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 #Javascript
微信小程序实现animation动画
Jan 26 #Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
Jan 26 #Javascript
微信小程序如何获取openid及用户信息
Jan 26 #Javascript
You might like
第十三节 对象串行化 [13]
2006/10/09 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php无序树实现方法
2015/07/28 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jquery选择器使用详解
2014/04/08 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
python一些性能分析的技巧
2020/08/30 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
运动会广播稿500字
2014/01/28 职场文书
优秀医生事迹材料
2014/02/12 职场文书
座谈会主持词
2014/03/20 职场文书
党性观念心得体会
2014/09/03 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
合理化建议书范文
2015/09/14 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers