Vue-sync修饰符

wujiawen 发布于

.sync修饰符

vue的prop是单向下行绑定:父级的prop的更新会向下流动到子组件中,但是反过来不行

这时,可以通过 .sync修饰符实现“双向绑定”

  • 使用
    .sync修饰符作用与v-model类似,可以双向绑定父子组件的props参数

    1
    2
    3
    4
    5
    6
    // 子组件
    <template>
    <child :title.sync="myTitle"> // myTitle是父组件中data的一个属性
    </template>
    // 当子组件需要更新 title 的值时,它需要显式地触发一个更新事件:
    this.$emit('update:title', newValue)

    这样title的属性在子组件内部更新,父组件也能感知的到,实现了“双向绑定”。

  • 原理
    .sync修饰符的本质是一个语法糖

    1
    2
    3
    <child :title.sync="myTitle">
    // 等同于
    <child :title="myTitle" @update:title="myTitle=$event">

    是通过this.$emit()触发update事件,实现父组件数据的修改