惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
腾讯CDC
Y
Y Combinator Blog
L
LangChain Blog
B
Blog
U
Unit 42
P
Proofpoint News Feed
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
WordPress大学
WordPress大学
月光博客
月光博客
Vercel News
Vercel News
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗

OhYee 博客

小鹏辅助驾驶测评|OhYee 博客 小鹏非支持手机开启自动解锁|OhYee 博客 使用函数计算实现 301 重定向|OhYee 博客 针对 HTML 内容使用 Ant Design 图片弹框|OhYee 博客 博客进程泄露及僵尸进程解决|OhYee 博客 蓝易云服务器体验|OhYee 博客 SSH 调起本地 VSCode|OhYee 博客 【2022 秋招内推】阿里云后端研发工程师|OhYee 博客 使用函数计算获取 IP 地址信息|OhYee 博客 正确获取客户端 IP/HTTP Header 也可能重复|OhYee 博客 评测 Oculus Quest2 及 BigScreen|OhYee 博客 NextJS 热重载保留状态|OhYee 博客 如何优雅地贴 gist 代码|OhYee 博客 Linux 精细化文件权限|OhYee 博客 VSCode 容器开发环境|OhYee 博客 Clash 的不兼容更新排查|OhYee 博客 Zeek 导出 PCAP|OhYee 博客 记一次 ssh 配置问题|OhYee 博客 Git Commit 规范化工具|OhYee 博客 谈谈《星之卡比-探索发现》|OhYee 博客 VSCode 快捷键绑定 Shell 命令|OhYee 博客 ASN.1 语法及 X.509 证书格式解析解析|OhYee 博客 腾讯企业邮箱忽略 MX 记录发信|OhYee 博客 Chrome/Edge 标签组插件|OhYee 博客 【应届内推】阿里云后端研发工程师|OhYee 博客 损坏的 Typecho 备份处理为 JSON|OhYee 博客 VS Code VIM 插件高效使用|OhYee 博客 SSH 正反向代理|OhYee 博客 Let's Encrypt 根证书过期引发的问题|OhYee 博客 OpenWRT 忽略内核依赖|OhYee 博客
Ant Design升级到v4版本|OhYee 博客
2020-02-28 · via OhYee 博客

Ant Design v4.0.0 发布,顺手更新体验一下

这是一篇最后编辑于 6 年前 的文章,其内容可能与目前实际情况差异较大,请注意甄别

Ant Design升级到v4版本

设计规范调整

  • 行高从 1.5(21px) 调整为 1.5715(22px)。
  • 基础圆角调整,由4px 改为 2px。
  • Selected 颜色和 Hovered 颜色进行了交换。
  • 全局阴影优化,调整为三层阴影区分控件层次关系。
  • 气泡确认框中图标的使用改变,由问号改为感叹号。
  • 部分组件选中颜色统一改为 @blue-1: #E6F7FF,对应 hover 颜色改为 @gray-2: #FAFAFA。
  • 报错色色值调整,由 @red-5: #F5222D 改为 @red-5: #FF4D4F。
  • 分割线颜色明度降低,由 #E8E8E8 改为 #F0F0F0。
  • DatePicker 交互重做,面板和输入框分离,范围选择现可单独选择开始和结束时间。
  • Table 默认背景颜色从透明修改为白色。
  • Tabs 火柴棍样式缩短为和文字等长。

由于一些代码修改较大,因此需要对已有代码进行修改

Icon 修改

这次图标从原先的全量引入改为了按需加载,对于确定只需要单个图标的地方,可以通过按需引入只加载单个图标的svg,共计能节省150KB

但是! 由于左侧的导航部分使用了动态图标,因此这里不能按需加载,因此需要使用import { Icon } from '@ant-design/compatible';来引入原本的Icon以供使用(@ant-design/compatible需要单独下载)

Form 修改

原本Ant Design的Form使用Form.create()this.props.form.getFieldDecorator()等函数对各种表单进行修改,可以说是非常不优雅的一种写法,这次更新将Form改写成了更符合直觉的写法1

首先,删掉导出的Form.create()部分,原先使用this.props.form.getFieldDecorator()设置的名称、规则直接通过Form.Item的参数设置

而获得Form实例有两种方式,首选的方案为使用const [form] = Form.useForm();,但是这种写法在class component中无法使用,因此应该使用另一种方案formRef = React.createRef<FormInstance>();,并使用<Form ref={this.formRef}>来绑定
需要调用form相关函数时,可以使用this.formRef.current.getFieldsValue()

字段的初始值设置,移入了<Form initialValues={{"name":"OhYee"}}>,同时字段对应属性valuePropName则移入Form.Item

Row 修改

新版本的栅格组件将flex从Row移入Col,因此所有涉及到布局的内容都应该重新修改

Table 修改

Table基本上没有太大的修改,只不过改了下表格背景色及一些细节
但是最大的问题在于引入了一个新的Bug:在column中的setState()不会触发表格重新渲染(但是值确实已经改变了)。对于可编辑的表格来说,将导致功能不可用。

临时的解决方案时,把对应行的 key 值修改成别的值,然后再修改回去,从而触发行重新渲染,相关Issue见参考资料2 3

不过由于这里后台深度依赖于该功能,以及设计拓展字段也依赖于该功能,这种深层次的修改更为复杂,因此还是等待官方更新。

参考资料


  1. 从 v3 到 v4 —— Form ↩︎

  2. Table - Column render not working on state changing ↩︎

  3. 升级到4.0后,class table setState(editable,columns) 失效 ↩︎