本指南涵盖了 Zustand 与 React 应用程序的集成,重点介绍了核心 hook、性能优化模式和常见用法场景。有关 TypeScript 的特定信息,请参阅TypeScript 集成,有关服务器端渲染的详细信息,请参阅服务器端渲染。
Zustand 通过一组 hook 提供与 React 的无缝集成,将您的 store 连接到您的组件。虽然 Zustand 的核心状态管理是框架无关的,但它包含特定于 React 的绑定,使其与 React 应用程序特别方便使用。
来源:src/react.ts16-37 src/react.ts52-64
Zustand 的 create 函数允许您创建专门为 React 定制的 store。与原生的 createStore 函数不同,create 函数返回一个 React hook,组件可以直接使用。
在底层,create 调用原生 API 中的 createStore,然后将其包装为特定于 React 的功能,允许组件订阅 store 更新。
创建 store 后,您可以通过调用 hook 在组件中使用它
选择器允许您仅提取所需的状态片段,这有助于防止不必要的重新渲染
您也可以一次获取整个 store 状态,但这可能会导致不必要的重新渲染
选择多个状态属性时,使用 shallow 比较函数可以防止不必要的重新渲染
useShallow hook 提供了一种更方便的方式来使用浅比较
来源:src/react/shallow.ts1-13 src/traditional.ts21-47
对于更复杂的应用程序,您可能希望将 Zustand 与 React Context 结合使用,以便将 store 提供给组件树的特定部分或使用 props 初始化 store。
来源:docs/guides/nextjs.md102-243
要将 store 重置为其初始状态,您可以添加一个重置操作
对于具有多个 store 的应用程序,您可以创建一个实用程序来重置所有 store
此模式在测试中特别有用,您希望在测试用例之间重置状态。
来源:docs/guides/how-to-reset-state.md8-42 docs/guides/testing.md84-149
测试使用 Zustand 的 React 组件需要正确的设置,以确保在测试之间重置 store。推荐的方法是模拟 Zustand 模块并添加重置功能。
对于 Jest
来源:docs/guides/testing.md53-149 docs/guides/testing.md294-439
在使用 Next.js 等服务器端渲染 (SSR) 框架时,您需要确保
来源:docs/guides/nextjs.md6-25 docs/guides/ssr-and-hydration.md6-18 docs/guides/nextjs.md319-403
Zustand 的 React 集成提供了一种简单而强大的方式来管理 React 应用程序中的状态。通过利用选择器和相等函数,您可以在保持干净简洁的 API 的同时优化组件渲染。
将 Zustand 与 React 结合使用的主要好处包括
无论您是构建小型应用程序还是复杂应用程序,Zustand 的 React 集成都提供了简洁性和强大功能的平衡,可以随着您的需求进行扩展。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(4d3a01)