vue3动态生成ant-table的columns

723 阅读1分钟

一、问题的开始

最近在做后台管理系统,使用的是ant-design-vue。我发现最常用的组件就是table,而且table的column 还不少,每次使用table都会在组件外配置很多的columns,相同的属性要写好多遍,比如这样:

企业微信截图_16781697835453.png

二、开始思考,如何减少重复代码

  1. 确定什么可以优化,哪些无法优化。对于column,我们传入的数据是无法优化的,但是我们每一项的属性是可以避免重复开发的

  2. 确定优化方式。我是打算写一个公共函数,传入数据,生成columns。因此如下方法产生了:

image.png

- 分析出每个column 必须传入的属性,根据我的业务,分别是title、dataIndex、key、width、slots,其中dataIndex和key是一个值,slots是常用可选项,因为在我的业务中大多数情况会对数据展示进行特殊处理。
- 对于其余不常用属性,直接在外部传入对象,通过 object.assign进行合并
- 返回生成的columns

3. 自测

三、优化结果

  1. 在页面中引入这个公共方法

  2. 定义columns时

    企业微信截图_16781700128153.png