v-model 直接绑定 ref 或 reactive 数据实现双向绑定最简洁;子组件需用 defineprops 和 defineemits 支持 v-model;多参数如 v-model:checked 本质是 :checked + @update:checked;避免响应式丢失和类型推导问题。

用 v-model 直接绑定响应式变量
在 script setup 中,表单双向绑定最简洁的方式就是直接用 v-model 绑定 ref 或 reactive 创建的响应式数据。不需要手动写事件监听和赋值逻辑。
例如输入框绑定字符串:
- 定义
const name = ref(''),模板中写<input v-model="name"> - 定义
const form = reactive({ email: '', password: '' }),模板中写<input v-model="form.email">
注意:v-model 对 ref 自动解包(读写 .value),对 reactive 对象属性则直接操作,无需额外处理。
子组件实现 v-model 的自定义绑定
当封装表单子组件(如自定义输入框)时,需配合 defineProps 和 defineEmits 实现 v-model 支持。
默认 v-model 绑定的是 modelValue prop 和 update:modelValue 事件:

