在处理全局数据流管理时,我们经常面临 State 和 Context 的问题。例如,在一个场景中,我们有 List 和 Canvas 两个组件,当 List 中的节点更新后,Canvas 中的节点也应相应更新。传统做法是通过父组件分发 state 给 List 和 Canvas,这可能导致全量更新。使用 Context API 或将节点状态存储在多个单独的 Context 中也存在局限性,尤其是当子节点动态增加时,这会再次导致整个树重新渲染。
Recoil 解决了上述问题,它采用分散管理原子状态的设计模式。Recoil 的核心单位是 Atom,它可以被订阅,当更新时,所有订阅的组件将用新值重新渲染。Recoil 使状态管理变得灵活,改变一个 Atom 只会影响特定的子组件,避免了不必要的全量渲染。