在 Vue 3 中,v-model
语法和 this.$emit("update:xx", value)
的用法略有变化,而 .sync
修饰符已经不再存在。下面是 Vue 2 中和 Vue 3 中的比较:
Vue 2 中的写法:
使用 this.$emit("update:xx", value)
:
<!-- ChildComponent.vue -->
<template><input :value="value" @input="updateValue" />
</template><script>
export default {props: ['value'],methods: {updateValue(event) {this.$emit('update:xx', event.target.value);}}
};
</script>
<!-- ParentComponent.vue -->
<template><child-component :xx.sync="parentValue" />
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentValue: ''};}
};
</script>
Vue 3 中的写法:
使用 v-model:xx
:
<!-- ChildComponent.vue -->
<template><input v-model:xx="value" />
</template><script>
export default {props: ['value']
};
</script>
<!-- ParentComponent.vue -->
<template><child-component v-model:xx="parentValue" />
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentValue: ''};}
};
</script>
在 Vue 3 中,推荐使用 v-model:xx
来简化双向绑定的语法。这样的写法更加直观和简洁,更好地符合 Vue 3 的设计理念。