别再只盯着GPS了!手把手教你用EVB_Air551G模块同时接收北斗三代/GPS/GLONASS信号
2026/6/9 11:27:00
.sync在setup()里失效?—— 一次搞懂 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被移除?.sync本质是v-bind+ 自定义事件,易与v-model混淆。v-model,支持多个、自定义名称,更直观。<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 |
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>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(老库迁移):
<script setup>);.sync行为(不推荐)。:xxx.sync改为v-model:xxxupdate:xxx事件v-modelvue/no-deprecated-sync-modifier开启
.sync已成历史,v-model才是未来。
把:xxx.sync改成v-model:xxx,一次性拥抱 Vue 3 统一、简洁的双向绑定模型!
最后问候亲爱的朋友们,并邀请你们阅读我的全新著作
📚 《Vue.js 3企业级项目开发实战(微课视频版》