当前位置: 首页 > news >正文

Vue 3 踩坑录:`.sync` 在 `setup()` 里失效?—— 一次搞懂 v-model 升级与替代方案

Vue 3 踩坑录:.syncsetup()里失效?—— 一次搞懂 v-model 升级与替代方案

一、问题现象

当你在 Vue 3 的<script setup>中写下:

<MyComp :title.sync="pageTitle" />

控制台立刻弹出警告:

The.syncmodifier is not supported in setup() function.

翻译:Vue 3 的setup语法糖里不再提供.sync,请使用新的v-model语法。


二、为什么.sync被移除?

  1. 语法冗余.sync本质是v-bind+ 自定义事件,易与v-model混淆。
  2. 统一模型:Vue 3 将所有双向绑定归并为v-model,支持多个、自定义名称,更直观。
  3. setup 简化<script setup>编译时直接生成v-model调用,.sync不再被编译。

三、升级路线图(对照表)

Vue 2 写法Vue 3 等价(setup)
:title.sync="val"v-model:title="val"
@update:title="val = $event"自动由v-model触发
多个.sync多个v-model

四、代码改造示例

1. 子组件:用defineEmits抛出事件

<!-- MyComp.vue --> <script setup> const props = defineProps({ title: String }) const emit = defineEmits(['update:title']) function onInput(e) { emit('update:title', e.target.value) } </script> <template> <input :value="title" @input="onInput" /> </template>

2. 父组件:新语法v-model:title

<script setup> import { ref } from 'vue' const pageTitle = ref('Vue 3') </script> <template> <!-- ✅ 新语法 --> <MyComp v-model:title="pageTitle" /> <p>{{ pageTitle }}</p> </template>

五、多个双向绑定(多v-model

<!-- 子组件 --> defineEmits(['update:title', 'update:count']) <!-- 父组件 --> <MyComp v-model:title="pageTitle" v-model:count="pageCount" />

六、兼容性方案(临时)

若必须保持.sync(老库迁移):

  1. 使用选项式 API(无<script setup>);
  2. 或通过custom directive手动实现.sync行为(不推荐)。

七、一键检查清单

  • 全部:xxx.sync改为v-model:xxx
  • 子组件抛出update:xxx事件
  • 多个双向绑定用多v-model
  • ESLint 规则vue/no-deprecated-sync-modifier开启

八、一句话总结

.sync已成历史,v-model才是未来。
:xxx.sync改成v-model:xxx,一次性拥抱 Vue 3 统一、简洁的双向绑定模型!


最后问候亲爱的朋友们,并邀请你们阅读我的全新著作

📚 《Vue.js 3企业级项目开发实战(微课视频版》

http://www.cnnetsun.cn/news/20421.html

相关文章:

  • 图像对比工具在网络安全配置中的高效应用与优化策略
  • 终极指南:macOS iSCSI Initiator快速连接远程存储
  • 在.NET Framework 4.7.2 使用Microsoft.Practices.EnterpriseLibrary.Data配置出错
  • 【论文自动阅读】HIERARCHICAL MIXTURE-OF-EXPERTS FOR GENERALIST VISION-LANGUAGE-ACTION POLICIES
  • FastDepth:嵌入式系统上的快速单目深度估计
  • Solidity 中的using for详解
  • GPT-5.2 的数据基石、原生多模态与隐私承诺的深度考量
  • 开源代码智能体SWE-Dev-9B崛起:逼近GPT-4o性能,90%工程师效率革命加速
  • Wasmer WebAssembly运行时终极指南:从零到实战部署
  • 2025年推荐一些程序员常逛的开发者社区
  • ExplorerPatcher深度解析:重塑Windows界面体验的终极方案
  • SketchUp STL插件实战指南:打通3D打印的最后一公里
  • 基于VUE技术的健康监测可视化系统设计与实现开题报告
  • 基于VUE技术的健康监测可视化系统设计与实现任务书
  • Smithbox游戏修改工具:从玩家痛点出发的7大深度解决方案
  • Qt + VS2017 编译缺少库,在对方设备无法运行,推荐几种做法。
  • 窗口管理大师:WindowResizer完整使用指南
  • 20亿参数撬动工业质检革命:Isaac-0.1开启边缘智能新纪元
  • 基于web的超市管理系统开题报告
  • Driver.js 1.x升级攻略:告别旧版,拥抱全新API设计
  • Laudspeaker:终极开源客户参与平台完全指南
  • 20、Snort Options and iptables Packet Filtering
  • 自主之路:中国科技国产化的战略纵深与实践探索
  • 22、深入了解 fwsnort:规则部署、选项及攻击检测实践
  • springboot基于vue的高校师资管理_kn455e4x
  • 不只是LoRA:Llama-Factory全面覆盖主流高效微调方法
  • fflate终极指南:掌握JavaScript高性能压缩解压技术
  • 26、Linux系统桌面环境配置与资源管理指南
  • C++ Primer 中文版高清资源 - 带详细目录的完整学习指南
  • Tabby终极使用手册:从零到精通的完整指南