vue3实现v-model
vue 3中实现v-model比简单很多,我们可以使用vue3提供的宏方法defineModel在子组件中直接定义需要双向绑定的数据
<!-- child.vue -->
<script setup lang="ts">
// 默认modelValue 写法v-model
const title = defineModel()
</script>
1
2
3
4
5
2
3
4
5
在父级组件中就可以使用v-model来绑定数据:
<!-- parent.vue -->
<child v-model="title" />
1
2
2
defineModel返回的是ref对象,意味着我们可以把他作为响应式数据在绑定到其它元素上
<!-- child.vue -->
标题:<input v-model="title" />
1
2
2
如上我们定义了一个默认v-model绑定值,但往往我们需要绑定的变量不止一个,在vue2中就提供了$emit(update:value)和.sync的方式来实现除默认v-model以外的变量双向绑定,这种在vue3也有保留并且使用更加方便。我们只需要在defineModel中传入一个参数,该参数就可以自定义声明绑定的变量,如下我们声明了一个content的变量,同样在父组件中使用v-model:声明变量即可完成双向绑定
<!-- child.vue -->
<script setup lang="ts">
// 默认modelValue 写法v-model
const content = defineModel('content')
</script>
<!-- parent.vue -->
<child v-mode:content="content" />
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
更多用法: defineModel() v-model
上次更新: 2025/09/05, 8:09:00