借鉴了Flux的思想,基于React Hooks,结合Ts做了一个数据管理方案的实现。他回答了以下几个问题。
一、如何实现数据共享。
使用context来完成数据单例的全局共享。React的哲学是,万物都是组件,所以对于状态管理来说,并不一定实现一个观察者,context自身就可以完成单项数据流的数据变化监听。
因此在方案中我将所有的请求结果都放在context中,从而进行复用。context被业务store持有。
这里插入一句,React本身就是一个状态管理的利刃,其中的数据权限是非常细的:
1)const。不随时间改变的。
2)state。交互性的数据。
3)props。子父层次的共享数据关系。
4)context。全局性质的数据。
因此我们从来不应该将所有的东西扔在Store中。而是应该根据数据的访问权限来灵活分配scope。
二、如何复用请求行为和请求数据。(共享)
不仅所有的请求数据都在sotre中,所有的请求调用过程,也都在store中。我们使用actions来持有这些方法。而actions最终通过调用dispatch方案来实现数据更新。
任何需要触发请求的地方,通过actions来触发。他封装了整个数据的维护方法。
三、如何实现快速开发。
Redux结合React-Redux。因此有很多的规范、模板、定义。我的感受是我在新增请求的时候,总需要修改很多地方,不是很迅捷,很分散。我通过削弱了一部分的灵活性,获取了编写过程的专注度,我精简了所有的多余的模板文件,只保留了最核心的js文件,并且通过TS来进一步约束语意。TS配合函数式编