那些你不知道的修饰符(.sync)

225 阅读1分钟

.sync 修饰符

一、什么是.sync呢?

简单来说 .sync 修饰符可以实现子组件与父组件的双向绑定,并且可以实现子组件同步修改父组件的值。

二、具体用法

实际上,父组件与子组件直接相互传值的流程是这样的,父传子,是父组件通过v-bind绑定要传递的数据,子组件通过props进行接收。子传父,是子组件通过this.$emit注册自定义事件,将数据传递给父组件,父组件通过监听子组件事件名进行接收,如果要简化上述的流程,可以使用.sync修饰符。

三、示图

父子传值.png

四、代码演示

// 正常父传子: 
<com1 :a="num" :b="num2"></com1>

// 加上sync之后父传子: 
<com1 :a.sync="num" .b.sync="num2"></com1> 

// 它等价于
<com1 
  :a="num" @update:a="val=>num=val"
  :b="num2" @update:b="val=>num2=val"></com1> 

// 相当于多了一个事件监听,事件名是update:a,回调函数中,会把接收到的值赋值给属性绑定的数据项中。

注意:带有 .sync 修饰符的 v-bind 不能和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。取而代之的是,你只能提供你想要绑定的 property 名,类似 v-model

参考文献:cn.vuejs.org/