vue2迁移到vue3,v-model的调整

本文档介绍了从Vue2迁移到Vue3时,v-model的使用方式变化,包括prop和事件名称的更新,如value -> modelValue,input -> update:modelValue。v-bind的.sync修饰符和组件model选项已被移除,由v-model参数替代。同时,现在支持在同一组件上使用多个v-model绑定,并可以创建自定义v-model修饰器。文章提供了代码示例和迁移调整的详细说明。

项目从vue2迁移到vue3,v-model不能再使用了,需要如何调整?

下面只提示变化最小的迁移,不赘述vue2和vue3中的常规写法。

vue2迁移到vue3,往往不想去调整之前的代码,以下就使用改动较小的方案进行调整。

In terms of what has changed, at a high level:

  • BREAKING: When used on custom components, v-model prop and event default names are changed:
    • prop: value -> modelValue;
    • event: input -> update:modelValue;
  • BREAKING: v-bind's .sync modifier and component model option are removed and replaced with an argument on v-model;
  • NEW: Multiple v-model bindings on the same component are possible now;
  • NEW: Added the ability to create custom v-model modifiers.

For more information, read on!

以上文档来自v-model | Vue 3 Migration GuideGuide on migrating from Vue 2 to Vue 3https://v3-migration.vuejs.org/breaking-changes/v-model.html

翻译结果:

就发生的变化而言,在高水平上:
BREAKING:在自定义组件上使用时,v模型道具和事件默认名称会发生更改:
prop:value->modelValue;
event:input->update:modelValue;
BREAKING:v-bind的.sync修饰符和组件模型选项被删除,并替换为v-model上的一个参数;
新功能:现在可以在同一组件上进行多个v模型绑定;
新增:增加了创建自定义v型模型修改器的功能。
有关更多信息,请继续阅读!

下面看代码调整:

简单写一个例子(vue2): 

<template>
    <view @click="onAdd">
        {{ value }}
    </view>
</template>
<script>
export default {
    props: {
        value: Number
    },
    methods: {
        onAdd(){
            this.$emit('input', this.value + 1)
        }
    }
}
</script>

上面改成(vue3)

<template>
    <view @click="onAdd">
        {{ modelValue }}
    </view>
</template>
<script>
export default {
    props: {
        modelValue: Number
    },
    methods: {
        onAdd(){
            this.$emit('update:modelValue', this.value + 1)
        }
    }
}
</script>

 下面将支出vue2迁至vue3需要修改的地方,见下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天府之绝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值