vue3+element-plus==> el-form输入响应式失效踩坑!!!!!!!!!!

坑:

这个坑我是真没想到,找了半天原因...

一开始我是这样写的

html 复制代码
<el-form :model="addForm" label-width="100px" ref="addForm">
    <!-- 表单内容 -->
</el-form>

输入框根本输入不了东西,或者有很高的延迟,不知道什么时候自己填进去了

用vue2的时候图方便一直都是这样写的

后面查了半天才发现,vue3就是不能这样写了

原因:

在 Vue 2 中,v-model 是通过 value 属性和 input 事件来实现双向绑定的,而 ref 是一个引用组件实例的方式,通常用来获取组件的实例,以便在父组件中访问和操作它。它们本质上不冲突 ,可以同时存在,因为 v-modelref没有 直接干扰彼此的功能。

但在vue3中,v-model 被重新设计了 。它不仅可以绑定一个值,还可以传递自定义的事件名称和 prop 名称。例如,你可以为 v-model 使用 modelValue 作为 prop,且它会自动监听 update:modelValue 事件。

那么这样就会导致:

refv-model 的冲突: 在 Vue 3 中,ref 用来引用组件实例,而 v-model 会通过 prop 和事件的方式来实现双向绑定,因此它们都需要依赖于 组件的 propsevents。如果你将 refv-model 同时绑定到同一个表单组件上,Vue 会产生冲突 ,因为它们在底层的实现上会干扰同一状态的操作。

解决方法:

其实ref 和 v-model设置不一样的值就好了

html 复制代码
<el-form :model="addForm" label-width="100px" ref="addFormRef">
  <!-- 表单内容 -->
</el-form>

🆗🦌

相关推荐
ZC跨境爬虫13 分钟前
跟着 MDN 学JavaScript day_10:数组——数据的有序集合
android·java·开发语言·前端·javascript
晓131321 分钟前
【Cocos Creator 2.x】篇——第五章 游戏常用关键技术
前端·javascript·vue.js·游戏引擎
W_LuYi1851 小时前
Tauri + Rust + Vue 3 打造极速轻量桌面应用
java·开发语言·vue.js·rust
qq4356947011 小时前
Vue03
javascript·vue.js
樱花的浪漫1 小时前
Typescript、Zod基础
前端·javascript·人工智能·语言模型·自然语言处理·typescript
用户549591657501 小时前
TinyVue Tree树形控件完全指南
vue.js
竹林8181 小时前
监听智能合约事件,我用 wagmi v2 踩了三天坑,终于找到了稳定方案
前端·javascript
用户852495071841 小时前
Bun 到底是什么?一个比 Node.js "更快更香"的 JS 运行时
javascript·程序员
Momo__1 小时前
SSR 懒水合四件套 — 99%的人不知道 Vue 3.5 藏了这些水合策略
前端·vue.js·性能优化
riuphan1 小时前
JavaScript 事件循环:单线程异步编程的核心机制
前端·javascript