当前位置: 首页 > Web前端 > vue.js

Vue3有什么不同:v-model升级了

时间:2023-03-31 18:48:37 vue.js

Overview开门见山,先以上帝视角看一下v-model有什么变化:主要变化:在自定义组件上使用v-model时,attributes和events默认名称已经改变:Attribute:value=>modelValueEvent:input=>update:modelValue主要变化:v-bind的.sync修饰符和组件的model选项被杀死,被v-model取代parameter新特性:支持同一个组件可以同时设置多个v-model新特性:支持开发者自定义v-model修饰符简介当年Vue2.0发布的时候,v-model只能绑定到组件的值属性。开发人员急了:“嘿,我可以为自己的组件使用另一个属性吗?”其实也支持:v-bind.sync来了解一下。在Vue2.2版本中,组件支持自定义模型,开发者可以通过该模型设置与v-model关联的属性和事件。用了几次还是很香的,但是还是有一个不能hack的缺点:单个组件不能绑定多个v-model。在即将到来的Vue3中,为了减少开发者的困惑,官方团队重新规范了双向绑定API,同时也让v-model的使用更加灵活。2.x是这样的在Vue2.x版本中,在组件上使用v-model相当于传递value属性并触发输入事件:如果要改变v-model绑定的属性或事件,需要添加模型子组件中://KyrieInput.vueexportdefault{model:{prop:'title',event:'change',},}经过以上修改,KyrieInput组件的v-model本质变成如下:使用v-bind.sync实现组件属性的双向绑定在某些场景下,我们需要实现组件属性的双向绑定,对于示例:实现一个弹窗组件,使用visible属性控制弹窗的出现和隐藏,弹窗在组件内外都可以关闭。官方团队推荐使用update:propName来解决这个问题。例如,在上面的KyrieInput例子中,我们可以使用下面这句话来改变组件内部title的值:this.$emit('update:title','Followme,youarecool');然后在父组件中监听这个事件:为了方便,.sync修饰符应运而生:"name"/>3.x应该这样玩在3.x版本中,在自定义组件上使用v-model相当于传递一个modelValue属性并触发update:modelValue事件:v-model如果要改变绑定的属性名,只需要给v-model只传递一个参数:秒。不仅如此,这种写法完全替代了.sync修饰符,支持在一个统一的组件中绑定多个v-model:想了解更多For资料请访问官网:https://v3.vuejs.org/guide/mi...(暂无中文版)文章首发于我的卫星攻击账号,请点击:这里