在 Vue 3 中,v-model
语法和 this.$emit("update:xx", value)
的用法略有变化,而 .sync
修饰符已经不再存在。下面是 Vue 2 中和 Vue 3 中的比较:
Vue 2 中的写法:
使用 this.$emit("update:xx", value)
:
javascript
<!-- 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>
javascript
<!-- 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
:
javascript
<!-- ChildComponent.vue -->
<template>
<input v-model:xx="value" />
</template>
<script>
export default {
props: ['value']
};
</script>
javascript
<!-- 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 的设计理念。