vue .sync 和 v-model 区别

在Vue.js中,.sync修饰符和v-model都用于实现双向数据绑定,但它们在应用场景和实现方式上有显著区别:

1. 核心用途

  • v-model
    主要用于表单元素自定义组件单一数据双向绑定 。默认绑定value属性和input事件(可配置为其他属性和事件)。
  • .sync
    用于多个props的双向绑定 。通过触发update:propName事件更新父组件的值,适合需要同步多个props的场景。

2. 语法实现

  • v-model

    语法糖,等价于绑定value属性和监听input事件:

    vue 复制代码
    <child :value="data" @input="data = $event" />

    自定义组件可通过model选项修改默认行为:

    javascript 复制代码
    model: { prop: 'checked', event: 'change' }
  • .sync

    语法糖,等价于绑定属性和监听update:propName事件:

    vue 复制代码
    <child :title="pageTitle" @update:title="pageTitle = $event" />

3. 数量限制

  • v-model
    在Vue 2中,一个组件只能有一个v-model

  • .sync
    支持多个props的双向绑定 ,例如:

    vue 复制代码
    <child :name.sync="userName" :age.sync="userAge" />

4. Vue 3中的变化

  • v-model
    支持参数化绑定 ,替代.sync的功能,例如:

    vue 复制代码
    <child v-model:name="userName" v-model:age="userAge" />

    Vue 3中不再推荐使用.sync,转而用带参数的v-model

5. 使用场景

  • v-model
    适用于核心数据绑定(如输入框、开关状态等)。
  • .sync
    适用于需要同步多个props的场景(如弹窗组件的多个配置参数)。

示例对比

  • v-model(Vue 2)

    父组件:

    vue 复制代码
    <CustomInput v-model="message" />

    子组件通过value接收值,触发input事件更新:

    javascript 复制代码
    this.$emit('input', newValue);
  • .sync(Vue 2)

    父组件:

    vue 复制代码
    <Child :title.sync="pageTitle" />

    子组件触发update:title事件:

    javascript 复制代码
    this.$emit('update:title', newTitle);

总结

特性 v-model .sync
绑定数量 单个 多个
默认绑定 valueinput事件 propupdate:prop事件
Vue 2场景 核心数据绑定 多props同步
Vue 3替代方案 支持参数化(替代.sync 废弃,改用带参数的v-model

在Vue 2中,根据需求选择:单一核心数据用v-model,多props同步用.sync;在Vue 3中,统一使用参数化的v-model

相关推荐
@PHARAOH10 分钟前
WHAT - GitLens supercharged 插件
前端
TT模板30 分钟前
苹果cms整合西瓜播放器XGplayer插件支持跳过片头尾
前端·html5
Wect1 小时前
React 性能优化精讲
前端·react.js·性能优化
追风筝的人er2 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
无敌的黑星星2 小时前
Java8 CompletableFuture 实战指南
linux·前端·python
雁鸣零落2 小时前
如何在 Chrome 中查看其他浏览器的书签?书签空间订阅与侧边栏只读切换指南
前端·chrome·edge浏览器
hpoenixf3 小时前
一天上线 + 零返工:我如何给复杂前端需求建立“安全感”
前端
广州华水科技3 小时前
单北斗GNSS变形监测系统在水利工程安全保障中的应用与优势分析
前端
yqcoder3 小时前
CSS 外边距重叠(Margin Collapsing):现象、原理与完美解决方案
前端·css
山楂树の4 小时前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画