背景
在前端构建表格时,如果表格中的列非常多,特别是多到横轴需要滚动的情况下,用户使用起来就会非常不便。
目标
提供动态更改表格列的功能,让用户可以自由选择当前显示哪些列。
至少包含以下 2 点:
- 支持多级列配置,所以必须是一个树选择。
支持保存到 localStorage,也需要支持不保存。
设计
三种数据
核心逻辑是处理好 2 个核心数据与多个中间数据之间的关系:
2 个核心数据
- defaultColumns。默认的列。可以理解为:加入没有这个动态更改机制,当前表格应该显示的列。
- displayColumns。显示的列。经过动态更改机制后,当前表格显示的列。
- n 个中间数据
- treeData。要将列数据转换为树选择器的依赖数据。
- notDisplayColumnKeys。
- 因为要存储在 localStorage 中,要尽可能简单,因此使用 keys 存储。
- 之后会更详细介绍为什么需要反向存储(not display)。
隐藏列的方式
以 Antd Table 组件为例,隐藏列的方式有 2 种,一种是直接修改 columns 配置
树选择器额外功能:多选、反选、搜索(高亮)
实现