解决elementUI中el-form、el-dialog、数据回显同时用时,有bug

在使用ElementUI时,遇到el-form与el-dialog结合使用时的数据回显bug。当先点击修改按钮,再点击新增,输入框会保留修改时的值。原因是Dialog的懒渲染和Vue数据的异步更新导致resetFields失效。通过分析问题并调整代码,成功解决了此问题。
摘要由CSDN通过智能技术生成

提示:记录学习elementUI时遇到的一些问题及解决办法


前言

现象: 第一次打开网页,先点击修改,再点击新增,发现输入框竟然有值
原因: 点击修改后,关闭对话框的时候,置空失效了
分析: 主人公resetFields有问题
线索1: Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot不会被渲染到 DOM 上
线索2: vue数据改变(先执行同步所有)再去更新DOM(异步代码)
无问题操作: 第一次打开网页,先点击新增按钮 -> dialog出现 -> el-form组件第一次挂载(关联的addForm对象的属性的值为空字符串) el-form组件内绑定了初始值,所以后续调用resetFields的时候,它可以用到空字符串初始值来重置
有问题: 第一次打开网页,先点击修改按钮 -> 虽然dialog变量为true了但是同步代码把addForm对象里赋值了(默认值) -> DON更新异步 -> dialog出现 -> el-form组件第一次挂载(使用addForm内置做回显然后第一次el-fonm内绑定了初始值(有值)) -> 以后做重置,它就用绑定的带值的做重置


按照1、2、3的顺序操作出现 bug ,图片展示:
在这里插入图片描述
按照1、2、3的顺序,在第二步、 第三步 操作时出现的图片,(设计时,是要点击第三步的地方是提出的框的数据清空,按照上面的步骤操作出现如下的情况)
在这里插入图片描述
按照1、3、2、3的顺序出现如下情况(这是正确的情况,我们要解决上面那种情况)
在这里插入图片描述

错误时的代码(主要看article.vue 的代码)

  1. request.js 的代码
import axios from 'axios'
const baseURL = 'xxxxxx'
const myAxios = axios.create({
   
// 基地址
  baseURL
})

// 导出 axios 自定义函数
export default myAxios
  1. api.js 的代码
/**
 * 获取-文章分类
 * @returns {*}
 */
const getArtCateListAPI = () => {
   
  return request({
   
    url: '/my/cate/list'
  })
}

/**
 * 添加-文章的分类
 * @param cate_name  cate_name:文章分类名
 * @param cate_alias  cate_alias:文章分类别名
 * @returns {*}
 */
const addArtCateAPI = ({
    cate_name, cate_alias}) => {
   
  return request({
   
    url: 'my/cate/add',
    method: 'POST',
    data: {
   
      cate_name,
      cate_alias
    }
  })
}

/**
 * 更新-文章分类
 * @param id  文章分类id
 * @param cate_name  文章分类名
 * @param cate_alias  文章分类别名
 * @returns {*}
 */
const updateArtCateAPI = ({
    id, cate_name, cate_alias}) => {
   
  return request({
   
    url: '/my/cate/info',
    method: 'put',
    data: {
   
      id,
      cate_name,
      cate_alias
    }
  })
}

// 导出接口
export {
   
addArtCateAPI,
getArtCateListAPI,
updateArtCateAPI
}

  1. article.vue 代码
<template>
  <div>
    <!-- 预览文章 -->
    <el-card class="box-card">
      <div slot="header" class="clearfix header-box">
        <span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿超学编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值