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学习笔记之jQuery的动画
Dec 22 Javascript
JQuery1.6 使用方法三
Nov 23 Javascript
DWZ刷新dialog解决方法
Mar 03 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
全面解析Bootstrap弹窗的实现方法
Dec 01 Javascript
Vue.js每天必学之计算属性computed与$watch
Sep 05 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
Angular2 组件交互实例详解
Aug 24 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
解决Nuxt使用axios跨域问题
Jul 06 Javascript
Vue h函数的使用详解
Feb 18 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查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python中return语句用法实例分析
2015/08/04 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
《莫泊桑拜师》教学反思
2014/04/23 职场文书
超市理货员岗位职责
2014/07/04 职场文书
房产公证委托书范本
2014/09/20 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android