Ant-design-pro: table组件再封装请求指导

Created on 25 Feb 2019  ·  4Comments  ·  Source: ant-design/ant-design-pro

需求:
因为项目很多模块都要用到table组件,包括分页,排序,编辑行等功能,所以就想能不能把这些功能自己封装到table组件里,使用时只需要传入参数就能实现功能,比如说table增加参数loadApi传入查询数据接口,由table去查询数据,分页功能也可以通过这个api去自动查询数据,编辑行通过给columns扩展属性去实现,方便重复使用开发
现在有两个思路:
1、不使用全局dva model,所有的数据请求直接在table中fetch,只管理自己的state
2、使用全局的dva model,state数据由全局model管理,因为是全局model,state数据根据不同的业务使用key:value分开

不知道我这思路是不是正确的,哪种好点,有没有其他好的方案

Most helpful comment

封装业务组件的关键应该是定 schema ,也就是数据结构和起名字的问题,有一个数据流上下游都舒服的接口的组件离一个好的业务组件不会太远。

All 4 comments

封装自己的业务组件完全没问题,会在一定程度上提高自己的工作效率,但不建议把 fetch 环节直接放到 Table 里进行,这可能需要后端为每个 Table 单独维护 API ,也不方便统一为 Request 添加额外的内容(例如 Authorize),而在 Table 外 fetch 则可以根据实际业务需求合并一些请求:例如需要为 Table 配备 Filter 时,可以在 fetch Table 内容的同时拿到 filters 的可选项。另外,实际业务中的一些复杂需求仍然需要额外的方法来实现(如果不介意 eval 也可以),由 Table 自主维护 state 加大了外界拿到 Table 内数据的难度,所以即使是在 Table 内 fetch 也不推荐第一种。前几天有模仿 AntD Pro 封装过 StandardTable ,希望能给到一点帮助,如果写的不够好,当反面教材也不错😏

封装自己的业务组件完全没问题,会在一定程度上提高自己的工作效率,但不建议把 fetch 环节直接放到 Table 里进行,这可能需要后端为每个 Table 单独维护 API ,也不方便统一为 Request 添加额外的内容(例如 Authorize),而在 Table 外 fetch 则可以根据实际业务需求合并一些请求:例如需要为 Table 配备 Filter 时,可以在 fetch Table 内容的同时拿到 filters 的可选项。另外,实际业务中的一些复杂需求仍然需要额外的方法来实现(如果不介意 eval 也可以),由 Table 自主维护 state 加大了外界拿到 Table 内数据的难度,所以即使是在 Table 内 fetch 也不推荐第一种。前几天有模仿 AntD Pro 封装过 StandardTable ,希望能给到一点帮助,如果写的不够好,当反面教材也不错😏

谢谢细心回复,我们基本每次使用table都要分页和行编辑,怎么封装更好了,减少每次开发重复的代码量

封装业务组件的关键应该是定 schema ,也就是数据结构和起名字的问题,有一个数据流上下游都舒服的接口的组件离一个好的业务组件不会太远。

@WangJM001 大佬 你那个虚拟加载的treetable可以开源不

Was this page helpful?
0 / 5 - 0 ratings

Related issues

gaoqiang19514 picture gaoqiang19514  ·  3Comments

zhuanglong picture zhuanglong  ·  3Comments

renyi818 picture renyi818  ·  3Comments

lvzheng0404 picture lvzheng0404  ·  3Comments

yjz1004 picture yjz1004  ·  3Comments