vue中存在几个规则:
- 组件不可以修改prop外部数据
-
$emit
可以触发事件,并传参 -
$event
可以获取$emit
的参数
什么意思呢,意思就是当把数据传给一个子组件,这个组件不能直接修改这个数据,而是需要通过$emit
来触发一个事件并通知到父组件,父组件通过$event
来获取参数的值。
代码如下:
<button @click="$emit('update', n-100)"/>//子组件传参
<Child :n="total" v-on:update ="total = $event"/>//父组件监听并获取参数
父组件的这段代码可以改用.sync修饰符
<Child :n.sync="total" />
总结:
vue 修饰符sync的功能是::n.sync="total"
当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。他等价于父组件监听并获取参数:n="total" v-on:update ="total = $event"
,就是一种语法糖