核心动机
Rdx 的核心目标是让更加专注于页面业务逻辑的实现,用更少的代码,实现出更加完善的页面效果。
当页面模块越来越多,交互越来越复杂,组件间的状态依来关系越来越紧密,加上数据获取的竞态问题。前端开发复杂度在逐渐的上升。
- 交叉渲染造成的性能问题
- 请求返回的时序问题
- 组件间状态共享的问题
- 同步异步串联的场景
#
Rdx 做了什么?- 动态的收集状态间的依赖关系,通过 graph 的数据结构,动态的存储状态的上下游依赖关系。
- 通过依赖关系的调度,按需的通过 hooks 通知视图的状态更新。
- 记录状态节点的状态,可以通过 hooks 方便的获取到节点的运行状态。
- 可以通过 hooks 的方式,快速获取当前视图多个依赖状态的运行时状态的叠加态。
- 通过可视化的方式,快速的页面状态流的调试。
- 拥抱 typescript。
#
Rdx 的优势- 通过atom,可以使用更少的代码,进行组件间代码的共享。
- 通过compute,更便捷的访问异步数据。
- 统一状态管理,用户可以避免重复的状态维护的成本。
- 通过收集状态间的依赖关系,可以避免不必要的rerender。