比较
Jotai 诞生于解决 React 中的额外重渲染问题。 额外的重渲染是指渲染过程产生相同的 UI 结果, 用户不会看到任何差异。
要解决 React context (useContext + useState) 的这个问题, 需要很多 context 并面临一些问题。
- Provider 地狱:你的根组件可能有很多 context provider,这在技术上是可以的,有时候在不同的子树中提供 context 是可取的。
- 动态添加/删除:在运行时添加新的 context 不太好,因为你需要添加一个新的 provider,它的子元素将被重新挂载。
传统上,解决这个问题的自上而下的方法是使用选择器函数。 use-context-selector 库就是一个例子。 这种方法的问题是选择器函数需要返回 引用相等的值以防止重新渲染,这通常需要一个记忆化技术。
Jotai 采用了由 Recoil 启发的原子模型的自下而上的方法。 人们可以构建基于原子依赖的状态,并优化渲染。 这避免了需要记忆化。
Jotai 有两个原则。
- 原始:它的基本 API 很简单,就像
useState
。