这些钩子将通用的 Zustand 存储(使用 createStore() 创建)连接到 React 组件,实现了框架无关的状态管理与 React 渲染系统之间的集成。虽然 useStore 提供了基本连接,但 useStoreWithEqualityFn 添加了自定义相等性检查以优化重新渲染。
对于直接使用 create() 创建的绑定到 React 的存储,请参阅 create。对于使用自定义相等性函数创建绑定到 React 的存储,请参阅 createWithEqualityFn。
来源
useStore 钩子使用 React 的 useSyncExternalStore API 来订阅通用存储更新
useStoreWithEqualityFn 钩子使用 use-sync-external-store 包中的 useSyncExternalStoreWithSelector 来对重新渲染进行额外控制
来源
| 功能 | useStore | useStoreWithEqualityFn |
|---|---|---|
| 包 | zustand | zustand/traditional |
| 依赖项 | 内置 React 钩子 | 需要 use-sync-external-store 包 |
| 重新渲染控制 | 默认相等性检查 (Object.is) | 自定义相等性检查函数 |
| 实现 | useSyncExternalStore | useSyncExternalStoreWithSelector |
| 性能优化 | 基础 | 高级 |
来源
最简单的模式是将通用存储连接到 React 组件
使用 useStoreWithEqualityFn 和自定义相等性函数来优化渲染
来源
为不同的实体动态创建 Store
实现示例
来源
为每个组件树创建隔离的 Store 实例
实现示例
来源
仅选择组件所需的部分
使用自定义相等性函数来防止不必要的重新渲染
使用 useShallow 创建记忆化的 Selector
来源
问题:Store 状态改变时,组件未更新
可能的解决方案:
setState 正确更新问题:组件重新渲染过于频繁
解决方案:使用 useStoreWithEqualityFn 和 shallow 相等性函数
来源
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(4d3a01)