.sync 修饰符

499 阅读1分钟

应用场景以及简介

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”,但是真正的双向绑定,会对父子组件通信带来维护上的问题,并且与vue单向数据流的思想相互违背。

.sync修饰符是对常规子组件向父组件传值模式的一种缩写

DEMO

app.vue

<template>
    <div id="app">
        <p>syncShow: {{syncShow}}</p>
        <syncModule :show.sync='syncShow'></syncModule>
        <!-- 相当于 v-bind:show='syncShow' @update:show='syncShow=$event' -->
        <button @click="syncShow = true">显示</button>
    </div>
</template>
import syncModule from '@components/sync.vue'
export default { 
    name: 'app',
    data () {
        return {
            syncShow: false
        }
    },
    components: {
       syncModule
    },
}

sync.vue

    <template>
      <div v-if="show">
        <button @click="$emit('update:show', false)">点击关闭</button>
      </div>
    </template>
    <script>
    export default {
      name: 'syncModule',
      props:{
        show: {
          type: Boolean,
          default: false
        }
      },
      data () {
        return {}
      }
    }
    </script>