首先我们需要明白
Vue中规定了组件不能修改props外部数据 所以当我们通过子组件去直接修改父组件也就是外部数据中的内容时,Vue就会警告我们
案例
<Child :money.sync="total" />
会被扩展为
<Child :money.="total" v-on:update:money="total = $event" />
当子组件需要更新money的值时
<button @click="$emit('update:money', money - 100)">
<span>用钱</span>
</button>
所以我们可以认为sync实际上是一个语法糖 当一个子组件改变了一个 props 的值时,这个变化也会同步到父组件中所绑定。
总结:
- 组件不能修改props外部数据
- $emit可以触发事件并传参
- emit的参数