在vue项目中,我们经常会遇到入下情况,将部分代码组件化,成为子组件复用,那么在属性值的传递过程中,又会遇到子组件内想要改变传递的属性值的时候,父组件的值不同步的问题,该如何解决这个问题呢?
方法1:子组件内emit方法,父组件接收到然后在父组件内修改。
在子组件内,想要修改传递的值该如何修改呢,如果直接 this.value = "" 通常会报不可直接修改的错误。此时我用this.$emit()进行修改,告知父组件要修改,然后在父组件内写入方法再进行修改。
这样就饶了一圈。为了更好的解决这个问题,我们引入 sync,
方法2: 引入 sync
首先。在父组件传递值的时候,加上修饰符 sync 例如:value的传递
<dtWechat :value.sync="value" ></dtWechat>
在子组件内如何操作呢。 子组件内要改边值的时候 同样使用$emit, 不过也要加上修饰符:update, 后面的false就是要更改后的value值
this.$emit("update:value",false)