
.sync 修饰符在 Vue 3 中已被完全移除,它的核心能力由 v-model 的参数化语法直接承接——也就是通过 v-model:xxx 绑定任意 prop,并配合子组件触发 update:xxx 事件来实现。
v-model 参数化替代 .sync
Vue 2 中的 :title.sync="pageTitle" 写法,在 Vue 3 中应改为:
<childcomponent v-model:title="pageTitle"></childcomponent>- 父组件不再需要额外写
@update:title,v-model 自动监听update:title事件并更新值 - 子组件需声明
title为 prop,并在需要同步新值时调用emit('update:title', newValue)
默认 v-model 对应 update:modelValue
当只写 v-model(无参数)时,它本质是语法糖:
从零开始编排 SpringBoot+Vue 全栈项目工作流,适用于新建全栈项目或完整脚手架请求,触发后依次调用 product‑spec‑builder(需求调研)等模块。
- 绑定
:model-value="value"(注意 kebab-case) - 监听
@update:model-value事件 - 子组件必须接收
modelValueprop,并在内部变更时emit('update:model-value', newVal)
子组件如何正确触发更新
推荐使用 defineEmits 显式声明事件,避免拼写错误:
立即学习“前端免费学习笔记(深入)”;
const emit = defineEmits(['update:title', 'update:modelValue'])- 输入框示例:
<input :value="title"> emit('update:title', e.target.value)"> - 注意:不要写成
update:title带空格或大小写错误,事件名必须严格匹配
多个 v-model 同时使用
Vue 3 支持一个组件上绑定多个 v-model,这是 .sync 完全做不到的:
<forminput v-model:username="user.name" v-model:email="user.email"></forminput>- 子组件分别接收
username和emailprop,并各自触发对应update:xxx事件 - 逻辑清晰、职责分离,无需手动维护一堆
@update:xxx监听器

















