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 相关文章推荐
Javascript 函数对象的多重身份
Jun 28 Javascript
Aptana调试javascript图解教程
Nov 30 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
May 02 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
php动态变量定义及使用
2015/06/10 PHP
PHP模块化安装教程
2016/06/01 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
JS重要知识点小结
2011/11/06 Javascript
Web开发之JavaScript
2012/03/29 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
详解js常用分割取字符串的方法
2019/05/15 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
Python实现登陆文件验证方法
2018/10/06 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
致共产党员倡议书
2014/04/16 职场文书
文明演讲稿范文
2014/05/12 职场文书
银行求职信范文
2014/05/26 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
教师外出学习心得体会
2016/01/18 职场文书
Python实现批量自动整理文件
2022/03/16 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL