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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
Js event事件在IE、FF兼容性问题
Jan 01 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
详解JS预解析原理
Jun 16 Javascript
js实现简易拖拽的示例
Oct 26 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中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
PHP框架性能测试报告
2016/05/08 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python断言assert的用法代码解析
2018/02/03 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
护士上岗前培训自我鉴定
2014/04/20 职场文书
社团活动总结范文
2014/04/26 职场文书
团支部推优材料
2014/05/21 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书