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 相关文章推荐
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
Sep 05 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
原生JS实现小小的音乐播放器
Oct 16 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 Javascript
详解JavaScript类型判断的四种方法
Oct 21 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
php实现每日签到功能
2018/11/29 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python中实现定制类的特殊方法总结
2014/09/28 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Python实现微信机器人的方法
2019/09/06 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
会计电算化应届生求职信
2013/11/03 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
团购业务员岗位职责
2014/03/15 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
先进个人自荐书
2015/03/06 职场文书
身份证丢失证明
2015/06/19 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA