render函数

313 阅读1分钟

1.render函数初步了解

<body>
  <div id="app">
<child :level="level">我是一个蜡笔小新!</child>
    </div>

<template id="hdom">
  <div>
<h1 v-if="level === 1">
<slot></slot> 
</h1>
<h2 v-else-if="level === 2">
<slot></slot> 
</h2> 
<h3 v-else-if="level === 3"> 
<slot></slot>
</h3>
  </div>
</template>
 <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.14/vue.min.js"></script>
      <script>
Vue.component('child',{
props:['level'],
template:'#hdom'
})
var app = new Vue({
  el:'#app',
  data:{
    level:1
  }
})
      </script>

</body>

链接:js.jirengu.com/bekebesofu/… template下面只能由一个子节点。所以如果有多个节点,需要用一个

来包裹。 render后的代码: 链接:js.jirengu.com/jeduguxaba/…

render函数的第一个参数(必选)

 Vue.component('child',{
           render:function(createElement){
               return createElement(
                   'h'+this.level,
                   this.$slots.default
               )
           }
       })
  • 在render函数的方法中,参数名必须是createElement不能改变;createElement的类型是function;
  • render函数的第一个函数可以是string,object,function

image.png

render的第二个函数可选,第二个参数是数据对象----只能是Object{}

render第三个参数,是

Strig或Array,Array用的多。作为我们构建函数的子节点进行使用。

image.png

this.$slots在插槽中的应用

image.png 这个里的p,p,h3,h5,就是插槽。

image.png

image.png

image.png

在render函数中使用props

v-model在render中的应用

image.png