一文读懂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
父组件传值:普通用法与同步用法
父组件:

子组件:


浙公网安备 33010602011771号