问题记录--elementui中el-form初始化表单resetFields()方法使用时出现的问题

遇到问题:

在打开表单时,如果有编辑回显就可能会遇到resetFields()没有将表单值清空,而是使用了第一次回显的内容

问题分析:

resetFields()并不会重置v-model绑定 的表单数据,它只重置表单校验状态和表单项的初始值 (即初始化时 :model 的值)

怎么解决・ࡇ・?:

首先检查el-form的使用有没有问题,有没有写错的格式、错误的数据使用之类的,检查完看起来都没问题的话,出现这种情况,那就是手动清空一下

比如:

javascript 复制代码
resetForm() {
  // 先清空 v-model 绑定的数据
  this.form = {
    id: null,
    name: '',
    sex: '',
    // 写成你 form 的默认初始值(空或默认值)
  };

  // 再调用 resetFields 重置表单状态(可选)
  this.$refs['form']?.resetFields?.();
}

通常这种方式都能解决这种问题

问题2:vue.runtime.esm.js:1887 TypeError: Cannot read properties of undefined (reading 'resetFields')报错

问题分析:

报错直接讲的就是resetFields这个东西是个undefined,说明执行的时候或者使用的时机不对,要么就是el-form的ref绑定写错了,要么就是dom没渲染就调用了,要么就是form的v-model绑定的值出了问题

怎么解决・ࡇ・?:

一般使用可选链(防御性编程)来避免报错,比如:

javascript 复制代码
this.$refs['subordinateForm']?.resetFields?.();

就是加个?.,这个东西不懂怎么用就上网查查ฅ ˘ฅ,查查就懂了

要不就用nextTick试试,一般都能解决,因为这种问题基本都是粗心导致的,所以写出这一篇博客来引以为戒˙Ⱉ˙ฅ,同志们不要粗心,共勉

相关推荐
嘟嘟07177 分钟前
从手写 HashRouter 到 React Router:逐层拆解 SPA 前端路由的完整实现
前端·javascript
我叫蒙奇41 分钟前
JS中的隐式类型转换
前端
他们叫我秃子43 分钟前
前端开发转 Go 全栈(四):代码写在前面,却要最后执行?我终于搞懂了 defer
前端·后端·go
生戎马 平安京策1 小时前
只学一点点:我的技术学习策略
前端·javascript·react.js
大鹏说大话1 小时前
HTML5 地理定位 Geolocation:获取用户位置的“红线”与最佳实践
前端·html·html5
Csvn2 小时前
content-visibility: auto —— 让浏览器跳过离屏渲染的性能黑科技
前端
小鹰信息技术服务部2 小时前
Edge安装包MicrosoftEdgeSetup.exe无法运行,点击没反应
前端·edge
__zRainy__2 小时前
React之reduce实现compose和中间件
javascript·react.js·ecmascript
webkubor2 小时前
一次前端生产白屏复盘:旧 HTML、Hash 资源和 MIME type text/html
前端·前端工程化
咩咩啃树皮3 小时前
第63篇【终极整合巨作】从零手写原生中后台管理系统|整合62篇全部前端知识点|从头到尾完整架构+全功能逻辑
前端·架构