核心动机

Rdx 的核心目标是让更加专注于页面业务逻辑的实现,用更少的代码,实现出更加完善的页面效果。

当页面模块越来越多,交互越来越复杂,组件间的状态依来关系越来越紧密,加上数据获取的竞态问题。前端开发复杂度在逐渐的上升。

  • 交叉渲染造成的性能问题
  • 请求返回的时序问题
  • 组件间状态共享的问题
  • 同步异步串联的场景

Rdx 做了什么?#

  • 动态的收集状态间的依赖关系,通过 graph 的数据结构,动态的存储状态的上下游依赖关系。
  • 通过依赖关系的调度,按需的通过 hooks 通知视图的状态更新。
  • 记录状态节点的状态,可以通过 hooks 方便的获取到节点的运行状态。
  • 可以通过 hooks 的方式,快速获取当前视图多个依赖状态的运行时状态的叠加态。
  • 通过可视化的方式,快速的页面状态流的调试。
  • 拥抱 typescript。

Rdx 的优势#

  • 通过atom,可以使用更少的代码,进行组件间代码的共享。
  • 通过compute,更便捷的访问异步数据。
  • 统一状态管理,用户可以避免重复的状态维护的成本。
  • 通过收集状态间的依赖关系,可以避免不必要的rerender。