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实现表格动态分页实现代码
Jun 21 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 Javascript
Node调用Java的示例代码
Sep 20 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
JavaScript实现原型封装轮播图
Dec 27 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
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
JS高级运动实例分析
2016/12/20 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
详解Python 函数如何重载?
2019/04/23 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
error和exception有什么区别
2012/10/02 面试题
介绍一下except的用法和作用
2015/01/22 面试题
体育教育专业自荐信范文
2013/12/20 职场文书
开业庆典邀请函
2014/01/08 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
低碳环保演讲稿
2014/08/28 职场文书
五年级作文之成长
2019/09/16 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js