vue中.sync修饰符的用法
在使用vue实现业务的过程中,经常会遇到父组件向子组件传值,并监听由子组件调用$emit方法来改变对应的值。代码如下:
1 //父组件 2 <my-child :isBool="isBool" @boolChange="boolChange"> 3 .. 4 .. 5 data() { 6 return: { 7 isBool: true 8 } 9 } 10 11 methods: { 12 boolChange(bool) { 13 this.isBool = bool 14 } 15 } 16 17 //子组件 18 .... 19 methods: { 20 test() { 21 this.$emit("boolChange", false) 22 } 23 } 24 ....
这是最常见的写法。
vue为了书写方便,为这种模式提供一个缩写,即 .sync 修饰符:
//父组件 <my-child :isBool.sync="isBool"> .. .. data() { return: { isBool: true } } //子组件 .... methods: { test() { this.$emit("update:boolChange", false) } } ....
注意:
使用.sync修饰符后,子组件的$emit事件一定要使用"update:myPropName"的模式触发,原因是使用.sync修饰符就相当于把父级代码变成下面这样:
<my-child :isBool="isBool" @update:isBool="isBool = $event" ></my-child>

浙公网安备 33010602011771号