vue3使用响应式数据 + v-model导致响应式失效el-form表单无法输入的问题

vue3使用响应式数据 + v-model导致响应式失效el-form表单无法输入的问题

参考文章

重构vue2项目时发现的问题,原始项目使用的是Element-ui
其实vue3可以使用适配的Element-plus

问题描述

  1. el-form表单无法输入
  2. 控制台报错 Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfront in the data option. 使用响应式变量时应先声明

解决办法

由于 ref 命名和 model 的值一样导致出现了这样的问题。

<el-form ref="service" :model="service" label-width="80px">
    <el-form-item label="名称">
      <el-input v-model="service.name"></el-input>
    </el-form-item>
    ......
</el-form>

setup() {
  const state = reactive({
    service: {
      name: '**'
    }
  })
  return {
    ...toRefs(state)
  }
}

原因就是 el-form 声明了ref=“service”,导致 state 中声明的 service 被覆盖,2者冲突了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值