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 18 Javascript
fmt:formatDate的输出格式详解
Jan 09 Javascript
javascript读写json示例
Apr 11 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
jQuery中:password选择器用法实例
Jan 03 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 Javascript
vue组件学习教程
Sep 09 Javascript
JS排序算法之希尔排序与快速排序实现方法
Dec 12 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 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使用Imagick生成图片的方法
2015/07/31 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
vue中activated的用法
2021/01/03 Vue.js
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
解决Mac安装scrapy失败的问题
2018/06/13 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python之时间和日期使用小结
2019/02/14 Python
Django 开发环境配置过程详解
2019/07/18 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
小学生自我评价范例
2013/09/24 职场文书
自荐书模板
2013/12/19 职场文书
新党章心得体会
2014/09/04 职场文书
2015元旦节寄语
2014/12/08 职场文书
女性励志书籍推荐
2019/08/19 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis