背景

一次线上更新抽屉组件数据更新失败,然后梳理一下原因。

介绍页面

大概页面如下,打个码,会有好多个类似的 card,每个 card 里面就是一个表单项,现在的交互是每编辑一个输入框的时候,只要鼠标移出去就更新信息,那么,我这个表单里面有 9 个输入框,那么我每改一个,就会向后端请求一次接口。

默认情况下,我创建一条信息表单之后,会直接打开这个抽屉,然后填充数据,此时上图中的表单信息还没有,收到的数据为 null。

此时,我在这几个输入框输入几个数据,会发现有重复创建的报错。

此时,将页面刷新一下,会发现填的几个数据,就第一次输入的更新成功了,其它输入没有成功。

但是在刷新之后,提交编辑又可以了,啊这…

很奇怪…

解决问题

在自己调试与后端同学的帮助下,发现了问题所在:

首先,为什么会重复创建问题。

因为第一次请求的时候是不需要传递那个表单对应的 id 的,所以更新是不会有问题的,而第二次更新输入,没有提交 id,后端会以为是继续新增,所以会报重复创建错误。

而刷新之后只显示一个数据也和上面同理。

那么,为什么刷新之后为什么又可以编辑了呢。

原因是后端是这样的逻辑,第一次新增的时候不需要传 id,因为后端那边还没有一个对象存储,当我新增一次之后了,就会返回给我一个这个存储块的 id。

所以,从第二次编辑的时候就是更新操作了,我们必须知道这个 id 才能找到我们要更新的地方嘛。

刷新之后,其实就是重新请求了一下 id,所以没问题,之后的更新都会带上 id。

解决方式

我也尝试去通过依赖来重新请求一下,不过页面些许复杂,而在这个抽屉里面,其实我是通过循环写的,每个区域对应一个后端接口,大概有 4-5 个样子。

其实主要问题就是前端不太好处理当前是否是新增还是更新操作,后端加一层逻辑判断就好了,自己数据库里面有 id 的时候帮我携带这个 id 就行,没有的话就代表第一次请求,是「新增」操作。

原来的逻辑:

其实这个页面是重构的,之前的前端处理方式就很明确,每个区域不是放在一起的,假设我现在有 4 个表单信息,都放在整个抽屉里面,每编辑一个输入框就会请求接口更新或者新增。

而之前的话是放在 4 个 tab 里面的,每个 tab 是整体进行更新的,会有一个编辑按钮,点击编辑所有输入框才可以编辑,编辑完之后再点击「更新」按钮即可,这样就不会出现我这个问题。

当第一次编辑的时候没有 id,然后提交之后就有 id 了,下次再编辑的时候会先获取一下信息,就可以从中获取 id 了。

而我现在前端的交互如果在新增之后再获取一下 id 的话,整个抽屉内容可能都会进行更新,这渲染力度太大了,既然后端一个逻辑判断的事儿那就交给后端做吧(逃~

【antd pro】关于 drawer 使用的一些思考相关推荐

  1. java antd实现登录,基于 antd pro 的短信验证码登录

    概要 整体流程 前端 页面代码 请求验证码和登录的 service (src/services/login.js) 处理登录的 model (src/models/login.js) 后端 短信验证码 ...

  2. Error: Module “xxx“ does not exist in container. / antd pro v5启用qiankun报错 / 同时使用mfsu和qiankun报错

    一.问题描述 我们用antd pro v5搭建前端项目,启用qiankun微前端模式,终端报错如下: Uncaught (in promise) Error: Module "xxx&quo ...

  3. antd pro中如何使用mock数据以及调用接口

    antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services  models  components models层用于存放数据 ...

  4. Antd pro中ProFormSelect使用initialValues

    最近使用antd pro写项目,其中有一个下拉框回显问题,原本挺简单的代码,但是就是回显对不上. 我给的值是id,想让其显示name,但是显示的确实id.. 正常的解决思路如下: 原代码代码如下: & ...

  5. react + antd pro 项目搭建及发布流程

    #antd Pro 项目环境搭建 ##一.搭建项目 参考网址:https://pro.ant.design/docs/deploy-cn ###1.安装 从 GitHub 仓库中直接安装最新的脚手架代 ...

  6. Antd Pro V4 样式修改大全(有图有真相)

    Antd Pro V4 样式修改大全 一.左侧菜单的logo和标题 (1)logo修改 BasicLayout.jsx import logo from '../assets/example.jpg' ...

  7. antd pro v5 tab标签卡(多标签页)实现

    多标签页很多公司的后台管理系统都会有这个需求,之前用vue一般架子也是带的,现在公司用了antd pro ,看了下官方不支持,确实会影响性能,但是架不住需求. 补充: antdpro 已经内置了多页签 ...

  8. antd pro学习入门笔记+todolist实例

    AntD Pro零散笔记 antd pro 4.0是一个集成了前后端服务.mock模拟接口.dva容器.typescript.less的一个解决方案,有助于快速的二次开发(不过感觉脚手架真的很大) 文 ...

  9. Antd Pro项目接入qiankun微前端

    在开始之前,请先提前了解微前端相关概念 场景: antd pro项目中接入qiankun,抽离其中某个模块作为子应用 一.项目技术 Ant Design Pro UmiJS webpack ts 其他 ...

  10. antd pro mysql_antd pro table中的文件上传

    概述 项目中经常会遇到在表格中展示图片的需求(比如展示用户信息时, 有一列是用户的头像). antd pro table 的功能很强大, 对于常规的信息展示只需参照示例配置 column 就可以了. ...

最新文章

  1. HttpClient 连接池设置不当引发的一次雪崩
  2. Python3 文件的重命名
  3. 初识Mysql(part16)--我需要知道的2条Mysql语句之子查询
  4. matchers依赖_Hamcrest Matchers的高级创建
  5. linux bootstrap强制结束,Cisco UCCX bootstrap服务目录遍历漏洞
  6. SpringMVC框架----SpringMVC的自定义类型转换器
  7. org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
  8. 扩展Jquery方法创建LigerUI Grid
  9. VSCode中使用vue项目ESlint验证配置
  10. 弹出框插件——dialog
  11. UML 类图符号简介-符号 各种关系说明以及举例
  12. springMVC简介
  13. matlab 振动,Matlab振动程序-代码作业
  14. 谷歌与IE浏览器兼容问题
  15. shader篇-纹理-凹凸映射
  16. 手机计算机藏应用,把隐私藏进计算器!这款功能强大的隐私保护软件,层层防护,怒赞...
  17. 【前端知识点】promise简书-30分钟带你搞懂promise面试必备
  18. ie浏览器报错:不支持此类_浏览器趋势(2013年3月):IE降至30%以下
  19. 2017年8月15日 星期二
  20. 【根据模板导出多sheet表格数据】

热门文章

  1. 使用爱思助手制作越狱 U 盘
  2. 【Facebook招聘笔试】查找相同URL
  3. 随笔.记忆是有味道的
  4. 通过linux课程我学到了什么作文,linux学习心得怎么写
  5. Xampp Mysql3306端口被占用
  6. 第一届区块链技术及应用峰会“区块链核心技术”分论坛预告大放送
  7. virsh 网络设置_KVM中的宿主机网络配置
  8. 硬盘对拷速度很慢是什么原因该如何解决?
  9. Java.DNA序列
  10. 虚拟机共享计算机的网络连接,个人经验教你怎样实现虚拟机上网(VM共享主机IP)-虚拟机上网设置...