Vue3 | Element Plus resetFields不生效

vue3+element-plus表单重置resetFields方法不生效,解决办法 需求:当点击登录按钮时,登录表单弹出,当点击登录表单右上角的×时销毁表单,并清空表单。解决resetFields不生效问题! 阅读详情

Vue3 | Element Plus resetFields不生效

1. 简介

先打开创建对话框没有问题,但只要先打开编辑对话框,后续在打开对话框就会有默认值,还无法使用resetFields()重置。
下面是用来复现问题的示例代码和示例GIF。

<script setup>
import {ref} from 'vue'

const formRef = ref(null)
const dialogFormVisible = ref(false)
const title = ref('')
const formData = ref({
  username: null,
  password: null,
})

const createDialog = () => {
  title.value = '创建'
  dialogFormVisible.value = true
}

const resetDialog = () => {
  formRef.value.resetFields()
}

const editDialog = () => {
  title.value = '编辑'
  // 模拟待编辑数据
  let user = {
    'username': 'yimtcode',
    'password': '123456'
  }
  Object.assign(formData.value, user)
  dialogFormVisible.value = true
}

const closeDialog = () => {
  formRef.value.resetFields()
  dialogFormVisible.value = false
}
</script>

<template>
  <el-dialog :title="title" v-model="dialogFormVisible" :before-close="closeDialog">
    <el-form ref="formRef" :model="formData">
      <el-form-item label="username" prop="username">
        <el-input v-model="formData.username" autocomplete="off"></el-input>
      </el-form-item>
      <el-form-item label="password" prop="password">
        <el-input v-model="formData.password" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>
    <template #footer>
    <span class="dialog-footer">
      <el-button @click="resetDialog">reset</el-button>
      <el-button @click="dialogFormVisible = false">取 消</el-button>
      <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
    </span>
    </template>
  </el-dialog>
  <el-button @click="createDialog">create</el-button>
  <el-button @click="editDialog">edit</el-button>
</template>

<style scoped>
</style>

movie

2. 原因

前置知识:el-form会记录第一次打开的值,当作表单的默认值。在后续调用resetFields会将当前绑定的数据对象设置为el-form默认值。

  1. editDialog
    1. title.value = '编辑'
    2. Object.assign(formData.value, user)
    3. dialogFormVisible.value = true:⭐️注意此时el-form将第一次打开的formValue值当成默认值也就是user对象的值。
  2. closeDialog
    1. formRef.value.resetFields():⭐️此处重置是有问题,会将当前formData值重置为user对象的值,因为当前el-form默认值在上面已经变成了user。
    2. dialogFormVisible.value = false
  3. createDialog打开对话框时,el-form就会将上面user当成默认值。

3. 解决方法

  1. 先让编辑对话框显示,完成el-form初始化,防止将当前user信息当成默认值,影响createDialog。
  2. 在下一个DOM更新,在把数据更新上已经显示的对话框。
const editDialog = () => {
  title.value = '编辑'
  dialogFormVisible.value = true

  nextTick(() => {
    // 模拟待编辑数据
    let user = {
      'username': 'yimtcode',
      'password': '123456'
    }
    Object.assign(formData.value, user)
  })
}

4. 参考

Element Plus表单重置黑洞:新增/编辑状态下的重置陷阱与终极解决方案 始终在mounted生命周期后设置表单数据使用nextTick()控制数据流顺序关闭弹窗时执行"清空数据-重置表单-重置初始值"三步法复杂场景建议分离新增/编辑组件,避免共享状态陷阱通过本文的原理分析与代码实践,开发者可以彻底规避Element Plus表单重置的黑洞问题。控制初始值的赋值时机,是解决此类问题的核心。 阅读详情

相关推荐

Vue3 + Element Plus 表单重置踩坑记:resetFields() 不生效的5个隐藏原因与修复方案

本文深入解析Vue3与Element Plus组合下表单重置方法resetFields()失效的5个技术原因及解决方案。从响应式系统变革、Ref访问模式到Prop校验规则,揭示Element Plus在Vue3环境下的特殊机制,并提供工程化修复方案,帮助开发者高效解决表单重置难题。

weixin_33696822的博客 875

vue3+element-plus表单重置resetFields方法不生效踩坑

vue3+element-plus表单重置resetFields方法有时不生效

YSQ_qsy的博客 2万+

Vue3+Element Plus表单重置:resetFields失效场景分析与实战修复

本文深入分析了Vue3+Element Plus表单重置中resetFields方法失效的典型场景,包括新增/编辑弹窗切换、异步数据加载和动态表单字段等情况。通过剖析技术原理,提供了同步数据、异步数据和动态表单字段的实战解决方案,帮助开发者有效修复resetFields失效问题,提升表单交互体验。

weixin_30788619的博客 356

Vue3 | Element Plus表单重置以及resetFields不生效

根据element plus提供表单重置方法1.首先el-from绑定一个ref值。2.其次el-form-item需要绑定prop属性如果不设置prop属性,表单提供的重置方法是不生效的,所以表单中需要加入prop属性3.定义表单的ref4.深层次查找你的ref绑定值找到resetFields方法5.放你的方法中使用ref里找到的方法

weixin_46468916的博客 7716

【Vue 功能总结】Vue3 + Element Plus 登录注册页面(表单校验篇)

在 <script setup> 中,使用 reactive 定义表单数据。// 表单数据绑定的对象})校验规则是一个对象,Key 必须对应 loginForm 中的字段名。Element Plus 提供了内置的校验规则,也支持自定义校验器。// 定义校验规则// 账号校验// 必填项,错误提示信息为 "请输入账号"{ required: true, message: '请输入账号', trigger: 'blur' },// 最小长度为3,最大长度为10,触发时机为失去焦点。

这是个栗子的博客 505

【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)

pandas对纯文本的读取提供了非常强力的支持,参数有四五十个。这些参数中,有的很容易被忽略,但是在实际工作中却用处很大。

weixin_47139649的博客 11万+

关于vue3中弹窗resetFields()的使用

关于vue3中resetFields()的使用

qq_45808765的博客 4094

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2064

vue3+element-plus表单重置resetFields方法不生效

vue3+element-plus表单重置resetFields方法不生效

明天的博客 1357

手把手教你用ECharts打造炫酷3D饼图(附完整源码)

本文详细介绍了如何使用ECharts创建炫酷的3D饼图,从环境配置到完整源码实现,涵盖参数解析、视觉优化和交互增强技巧。通过实战案例,帮助开发者快速掌握3D数据可视化技术,提升数据展示效果。

weixin_29031057的博客 279

以太网硬件核心:MAC、PHY、MII与交换机原理与实战排查

计算机网络通信的基础依赖于一套完整的硬件协议栈。在OSI模型中,数据链路层和物理层是实现设备间可靠、高效数据传输的基石。其核心原理在于将上层数据包封装成帧,并通过特定的介质访问控制与物理信号转换机制进行传输。这一过程的技术价值在于为上层应用提供了透明、稳定的通信信道,是互联网和所有局域网通信的物理承载。在嵌入式系统、网络设备开发及运维等应用场景中,深入理解底层硬件交互至关重要。本文将聚焦于以太网硬件的两大核心组件:负责逻辑成帧与流量控制的MAC控制器,以及负责数模转换与链路协商的PHY芯片。它们通过MII、

dgqvhtlwq472235338的博客 420

Vue3中Element-plus 表单resetFields失效,不能重置该表单项,使用$nextTick解决问题

使用nextTick解决表单重置失效问题

qq_42587686的博客 5053

二十八.国民技术MCU开发之UID获取与应用

在国民NT MCU中均有一个96位和128位的唯一设备标识符,其中UCID128 位, UID 为 96 位。手册中描述的作用是:通常用来做为序列号或作为密码,在编写闪存时,将此唯一标识与软件加解密算法相结合,进一步提高代码在闪存存储器内的安全性,也可用于激活带安全功能的自举程序(SecureBootloader)。UCID 和 UID,遵守国民技术芯片序列号定义,它包含芯片生产及版本相关信息。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1676

element-ui、element-plus表单resetFields()无效的坑

如题目

m0_58355897的博客 959

【推荐100个unity插件】将UE的资源导出到unity使用—— Exporter for Unreal to/for Unity插件

Unreal to Unity导出器是一款帮助开发者将Unreal Engine项目转换为Unity的工具。文章详细介绍了使用步骤:1)安装虚幻引擎并创建项目;2)在Plugins文件夹中安装导出插件;3)导入UE资产到Content文件夹;4)配置导出参数并完成转换。文末推荐了多个Unity开发专栏,涵盖C#编程、2D/3D开发、特效制作等内容。作者向宇提供了博客地址,欢迎读者交流学习。该工具能有效提升项目迁移效率,适合需要跨引擎开发的用户使用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 847

手把手教你学Simulink--基于微电网的建模与仿真场景实例:独立运行模式下微电网的能量管理系统设计

本文详细介绍了使用Simulink对独立运行微电网能量管理系统进行建模与仿真的完整流程。主要包括:系统结构设计(分布式能源、储能系统、负荷等模块)、建模步骤(从创建项目到实现能量管理策略)、仿真设置与结果分析。通过建立基于规则的控制逻辑和优化调度算法,实现微电网的自主运行和能量优化管理。文章还提供了参数优化和多目标改进建议,为新能源和智能电网领域的研究与应用提供了实用指导。

MHD0815的博客 8581

为什么Element Plus成为Vue 3企业级开发的默认选择

在Vue 3生态系统中,选择一个合适的UI组件库往往决定了项目的开发效率和最终用户体验。Element Plus作为Element UI的Vue 3版本,不仅继承了前者的成熟稳定,更在技术架构和开发体验上实现了全面升级。本文将深入探讨Element Plus如何解决企业级开发中的实际痛点,以及它为何成为众多团队的首选方案。 ## 从业务痛点出发的组件设计哲学 现代企业应用开发面临诸多挑战:复杂

gitblog_00369的博客 1114

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023年7月,瑞士洛桑联邦理工学院的Hongkeng Zhu和Elison Matioli在《IEEE Transactions on Power Electronics》期刊发表文章,提出了一种稳态测量方法,用于研究氮化镓(GaN)高电子迁移率晶体管(HEMT)的动态导通电阻(Ron)。实验结果显示,商业GaN器件在稳态下的动态Ron变化显著,稳定时间可达数分钟且与电压相关。传统的脉冲测量方法由于测试时间不足,可能导致结果不准确。该

荷塘阅色 1376

element-plus vue3 dialog form 清空 重置 resetFields

添加、修改同一个弹框,清空form表单数据。 element-plus vue3 dialog form 清空 重置 resetFields

zhengjf123的专栏 6702

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

element-plus中的resetFields()方法

该方法主要用于重置表单,将其值重置为初始值,并移除校验结果。

qq_39666711的博客 1220

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

element-plus弹窗中el-form使用resetFields方法不生效

element-plus弹窗中使用el-form resetFields方法失效问题解决

weixin_41586389的博客 1997

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Vue3(篇三) Element Plus

在与后端交互:axios与请求封装中,我们掌握了前端与后端 API 交互的方式。现在数据能获取到了,但如何优雅地展示和管理这些数据呢?直接用原生 HTML 标签(table、form)可以实现功能,但样式简陋、交互生硬,还需要自己写大量 CSS 和 JavaScript。在实际开发中,我们通常使用UI 组件库来快速构建美观、交互友好的界面。是 Vue3 生态中最成熟的 UI 组件库,提供了表格、表单、对话框、分页等常用组件,开箱即用。本文将通过一个学生管理系统。

勇往直前的博客 310

Vue3+element-plus表单重置resetFields方法失效问题

bug:在当前页面直接筛选重置,重置方法生效;但先筛选,再切换别的页面,再切回原页面重置,重置无效(keep-alive的页面无此bug)1.Vue3中页面没有使用keep-alive(noCache:true),不缓存当前组件实例。

Zaralike的博客 603

关于Element-plus表单组件的resetFields的一个有趣的小bug

6.逻辑分析:点击编辑小米(此时数据被赋值给表单数据对象) ==> 点击添加商品(这里第一次执行重置表单,但是因为表单本来的数据对象已经被赋值为小米,所以小米就成为了原始状态)==> 点击编辑别的商品(表单数据对象被赋值为别的商品) ==> 再次点击添加商品(重置到小米)1.点击商品的编辑按钮,会将当前行的数据赋值给定义的数据对象,通过双向绑定展示到弹出框的form表单里面。4.然而不是,因为我在点击别的商品的编辑按钮后比如华为,如果是没有重置应该是展示华为的数据,结果却是还是展示的小米。

torlent211的博客 137

Element Plus深度解析:Vue 3企业级UI组件库实战指南

在现代前端开发中,UI组件库是构建企业级应用的核心基础设施,它通过提供可复用的界面元素,显著提升开发效率和产品一致性。其原理在于封装通用交互模式与视觉规范,基于框架生态(如Vue 3的Composition API)提供声明式API。技术价值体现在标准化开发流程、保障体验统一、并支持深度定制以适应不同业务场景。以中后台管理系统、数据看板等复杂Web应用为典型场景,开发者常面临国际化适配、主题定制、性能优化等工程挑战。本文聚焦Element Plus这一基于Vue 3的流行组件库,针对“修改total文案”等

weixin_30859423的博客 419
上一篇: Go | zap
下一篇: Go context
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

yimtcode

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

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

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

打赏作者

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

抵扣说明:

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

余额充值