sync在vue早期版本2.0的时候被移除了,后来又加上了,作为一个用于子组件修改父组件传入的prop而存在的语法,用法如下:

父组件:

< template>
    < Snackbar :open.sync="showMessage" />
< /template>
<script>
export default {
  data() {
    return {
      showMessage: true,
    };
  }
</script>

子组件通过接受父组件的showMessage布尔值。

子组件:

< template>
    <p v-if="" @click="hide">子组件</p>
< /template>
<script>
export default {
   props:["open"],
   methods:{
     hide(){
       this.$emit("update:open",false);
     }
   }
 }
</script>

子组件通过$emit来触发自定义事件,其中update为sync修饰符约定俗成的一个方法,后面通过:符号跟一个要修改的变量名,这个变量名一般为sync修饰符所绑定的变量。

总之就是这么个写法。

父组件可以理解为使用了sync后,会多出一个这样的方法:

< template>
    < Snackbar :open.sync="showMessage" @update:open="(val)=>{open = val;}" />
< /template>
<script>
export default {
  data() {
    return {
      showMessage: true,
    };
  }
</script>

到这里你应该明白了$emit触发的方法名的由来吧。

以上就是sync的方法,真的非常方便。

分类: vue 项目实战 标签: .sync

评论

暂无评论数据

暂无评论数据

目录