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 必知必会之closure
Sep 21 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
Dec 27 Javascript
js获取页面传来参数的方法
Sep 06 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
javascript验证form表单数据的案例详解
Mar 25 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
JS实现php的伪分页
2008/05/25 PHP
如何判断php数组的维度
2013/06/10 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
详解JavaScript作用域 闭包
2020/07/29 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
python实现图片变亮或者变暗的方法
2015/06/01 Python
python简单实现获取当前时间
2016/08/27 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
opencv实现简单人脸识别
2021/02/19 Python
python实现按首字母分类查找功能
2019/10/31 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
毕业自荐信
2013/12/16 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
论文答谢词
2015/01/20 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电