因为是自研,并没有完整使用第三方的table库,所以在用起来非常不爽,还需要较大调整,现在只是第一步的记录。
先讲下功能,项目使用 react hooks的 useContext, useReducer 做数据管理,这就要求数据必须是从上往下的。 搜索条件,页码,每页记录行数,排序字段,排序方向都是需要在context中更新。
页面组成: 查询组件 + 表格组件 + 翻页组件
通过写这个组件加深了对 reducer 和 useEffect 的理解。
上边踩了个坑就是 在查询组件 和 翻页组件 中都使用了 useEffect 来发起后台请求。
这种做法有个 bug。 后台请求依赖的参数有: order, orderBy, pageIndex, pageSize, searchWord
, 其中 pageIndex, pageSize
参数是在翻页组件, order, orderBy
在表格组件, searchWord
在查询组件。
按照传统开发的惯性思维,还是在每个组件做操作,在组件中使用 setState
来改变值,然后使用useEffect
依赖参数的改变来发起后台请求。 这套操作在做查询,翻页,排序时会重复发起多次请求;这个问题知道的容易解决,算是入门级坑吧;
解决方式是在 查询组件 中使用 useEffect 发起后台请求,useEffect 的依赖参数为上边那些。在其它组件如果有触发相应参数值变更的,只做dispatch 就好。
网友评论