Vue render深入开发讲解
简介在使用Vue进行开发的时候,大多数情况下都是使用template进行开发,使用template简单、方便、快捷,可是有时候需要特殊的场景使用template就不是很适合。因此为了很好使用render函数,我决定深入窥探一下。各位看官如果觉得下面写的有不正确之处还望看官指出,你们与我的互动就是写作的最大动力。 场景官网描述的场景当我们开始写一个通过 level prop 动态生成 heading 标签的组件,你可能很快想到这样实现: 在这种场景中使用 template 并不是最好的选择:首先代码冗长,为了在不同级别的标题中插入锚点元素,我们需要重复地使用 虽然模板在大多数组件中都非常好用,但是在这里它就不是很简洁的了。那么,我们来尝试使用 render 函数重写上面的例子: 简单清晰很多!简单来说,这样代码精简很多,但是需要非常熟悉 Vue 的实例属性。在这个例子中,你需要知道当你不使用 slot 属性向组件中传递内容时,比如 anchored-heading 中的 Hello world!,这些子元素被存储在组件实例中的 $slots.default中。 createElement参数介绍接下来你需要熟悉的是如何在 createElement 函数中生成模板。这里是 createElement 接受的参数: 深入 data 对象有一件事要注意:正如在模板语法中,v-bind:class 和 v-bind:style ,会被特别对待一样,在 VNode 数据对象中,下列属性名是级别最高的字段。该对象也允许你绑定普通的 HTML 特性,就像 DOM 属性一样,比如 innerHTML (这会取代 v-html 指令)。 VNode | Array
条件渲染既然熟读以上api接下来咱们就来点实战。 之前这样写',});
var vm = new Vue({
el: "#app",data: {
isShow:true
}
});
render这样写我被你发现啦3!!!
//js
//组件形式
Vue.component('vv-isshow',{
props:{
show:{
type: Boolean,default: true
}
},render:function(h){
if(this.show ) return h('div',this.$slots.default);
},data: {
isShow:true
}
});
列表渲染之前是这样写的,而且v-for 时template内必须被一个标签包裹 ',错误
});
var vm = new Vue({
el: "#app",data: {
list: [{
id: 1,txt: 'javaScript',odd: true
},{
id: 2,txt: 'Vue',odd: false
},{
id: 3,txt: 'React',odd: true
}]
}
});
render这样写},props: { v-model之前的写法 看官你输入的是:{{txtcout}}
} render这样写总结render函数使用的是JavaScript 的完全编程的能力,在性能上是占用绝对的优势,小编只是对它进行剖析。至于实际项目你选择那种方式进行渲染依旧需要根据你的项目以及实际情况而定。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |