render 实现v-model
吐槽一下,官网上的例子不太适用,一般都是从已有的组件上开发了,哪会直接用input来搞,以element-ui为例,演示如何通过render实现v-model
v-model的本质是通过绑定组件的value和input(绝大多数)来实现双向绑定,拆开来是组件的value绑定父组件的data数据,当data数据改变时,组件的value因为被绑定了,所以data的变化会触发value的变化,换个方向,要想组件的value改变了,需要在input事件里通知data,由此改变data,这样就能达到双向绑定的效果。在render里面,从data到组件的value方向绑定比较容易,如果是组件到data,则直接给data赋值更新即可
例子
父组件
let root = {
data:test,
render:function(h){
let self = this;
return h('el-input',{
props:{
// data绑定到value
value:self.$data.test
},
on:{
input:function(value){
// 拿到data直接赋值
self.$data.test = value
}
}
})
}
}
new vue(root).$mount(id);本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!