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中的ajax分页实现代码
Sep 20 Javascript
js有关元素内容操作小结
Dec 20 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
jQuery提交多个表单的小技巧
Jul 27 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
Javascript中的async awai的用法
May 17 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
小程序实现列表点赞功能
Nov 02 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 Javascript
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
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程序
2006/10/09 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
javascript强大的日期函数代码分享
2013/09/04 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
Django contenttypes 框架详解(小结)
2018/08/13 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python while true实现爬虫定时任务
2020/06/08 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
司机的工作范围及职责
2013/11/13 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
公司会议策划方案
2014/05/17 职场文书
大学生作弊检讨书
2014/09/11 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
单位作风建设自查报告
2014/10/23 职场文书
通报表扬范文
2015/01/17 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
高考1977观后感
2015/06/04 职场文书