Vue 中的 .sync 修饰符

原理
.sync修饰符本质上是语法糖,将代码进行了简化。核心原理是对子组件, 对父组件的pros进行监听并且更新。先把父组件的props传入子组件,如果子组件触发事件,对父组件的props进行修改,.sync就会监听该事件并且更新父组件的props
Vue规则

组件不能修改外部数据props,只能触发事件,通知父组件的props进行修改
this.emit可以触发事件,并且传递参数event可以获取$emit的参数

场景
爸爸有1w块钱,儿子打电话请求爸爸传钱(触发事件),然后进行花费
代码实例

// 儿子组件,从爸爸组件那里请求钱,然后消费
<template>
  <div class="child">
    {{money}}
    // 点击按钮,触发事件
    <button @click="$emit('update:money', money-100)">
      <span>花钱</span>
    </button>
  </div>
</template>

<script>
export default {
  props: ["money"]
};
</script>

<style>
.child {
  border: 3px solid green;
}
</style>
// 爸爸组件,传钱给儿子,并监听儿子动态
<template>
  <div class="app">
    App.vue 我现在有 {{total}}
    <hr>
    <Child :money.sync="total"/>
    // 等价于<Child :money="total" v-on:update:money="total = $event"/>
  </div>
</template>

<script>
import Child from "./Child.vue";
export default {
  data() {
    return { total: 10000 };
  },
  components: { Child: Child }
};
</script>

<style>
.app {
  border: 3px solid red;
  padding: 10px;
}
</style>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。