一文读懂sync的基本知识

在Vue.js中,sync修饰符是一种便捷的方式,用于在父组件和子组件之间实现双向绑定

可以简化子组件向父组件传递数据的操作,避免显式地触发事件和处理自定义事件

基本的作用如下:

当在子组件的属性上使用sync修饰符时,Vue会自动将子组件的update:propName事件映射到父组件的propName属性更新,之后子组件内部可以通过触发update:propName事件来修改父组件的属性值,实现双向绑定效果

基本的语法如下:

<child-component :prop.sync="parentProp"></child-component>

子组件触发更新事件:

this.$emit('update:prop', newValue);

通过Demo深入了解其用法:

Demo1

父组件如下:

<template>
  <div>
    <h1>父组件</h1>
    <p>父组件的数据: {{ parentData }}</p>
    <!-- 使用sync修饰符 -->
    <child-component :data.sync="parentData"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent,
  },
  data() {
    return {
      parentData: '初始数据',
    };
  },
};
</script>

子组件如下:

<template>
  <div>
    <h2>子组件</h2>
    <p>子组件接收到的数据: {{ data }}</p>
    <button @click="updateData">更新数据</button>
  </div>
</template>

<script>
export default {
  props: {
    data: String,
  },
  methods: {
    updateData() {
      // 触发update事件,更新父组件的数据
      this.$emit('update:data', '子组件更新后的数据');
    },
  },
};
</script>

解读如下:

父组件:
定义一个parentData数据,并将其通过:data.sync传递给子组件
:data.sync="parentData"表示父组件的parentData数据与子组件的data属性是双向绑定的

子组件:
子组件接收父组件传递的data属性
当子组件内部需要更新data的值时,通过触发this.$emit('update:data', newValue)来通知父组件更新parentData
在这个示例中,点击按钮时,子组件会触发update:data事件,并将新的数据 '子组件更新后的数据' 作为参数传递给父组件

数据同步:
当子组件触发update:data事件时,Vue会自动将这个事件映射为对父组件parentData的更新
点击子组件的按钮后,父组件的parentData数据会被更新,界面也会随之变化,显示最新的数据

Demo2

父组件传值:普通用法与同步用法

父组件:

子组件:

 

posted @ 2024-07-15 15:58  鼓舞飞扬  阅读(18)  评论(0编辑  收藏  举报