Vue.js 中 v-model 和 .sync 的区别:实现父子组件双向绑定的利器
v-model 和 .sync 都是 Vue.js 中的语法糖,它们可以实现组件修改父组件的值,但它们的用法和实现方式有所不同。
'v-model' 是一个简化的语法,它将一个 prop 和一个事件绑定在一起,方便在组件中使用 v-model 进行双向绑定。例如:
<my-component v-model='foo'></my-component>
等价于:
<my-component :value='foo' @input='foo = $event'></my-component>
在 my-component 中修改 value 属性会触发 input 事件,将修改后的值传递回父组件,并更新父组件中的值。
'.sync' 也是一个语法糖,它可以简化父子组件之间的双向绑定。例如:
<my-component :name.sync='foo'></my-component>
等价于:
<my-component :name='foo' @update:name='val => { foo = val }'></my-component>
在 my-component 中修改 name 属性会触发 update:name 事件,将修改后的值传递回父组件,并更新父组件中的值。
区别:
-
'v-model' 只能用于 prop 和事件的双向绑定,而 '.sync' 可以用于任意 prop 的双向绑定。
-
'v-model' 只能用于组件内部的双向绑定,而 '.sync' 可以用于父子组件之间的双向绑定。
-
'.sync' 还可以在父组件中监听子组件的事件,而 'v-model' 不行。
总结:
'v-model' 和 '.sync' 都可以实现组件修改父组件的值,但它们的用法和实现方式有所不同,需要根据具体情况选择使用。
原文地址: https://www.cveoy.top/t/topic/lEfD 著作权归作者所有。请勿转载和采集!