For the complete documentation index, see llms.txt. This page is also available as Markdown.

Store 设置

本页介绍如何配置你的 Redux store、设置类型化 hooks,以及组织项目结构。

文件夹结构

项目必须遵循以下结构以保持一致性和可维护性:

src/
  app/
    store.ts              # Store 配置
    hooks.ts              # 类型化 hooks(useAppDispatch/useAppSelector)
  shared/
    types/                # DTO(API)、领域模型、映射器
    utils/                # 共享工具
  services/
    client.ts             # RTK Query 基础客户端
    baseQuery.ts          # 带有认证/chainId/重试的基础查询
  features/
    user/
      user.client.ts      # RTK Query 端点
      user.slice.ts       # UI 状态切片
      user.selectors.ts   # 记忆化选择器
      __tests__/          # 测试
    land/
      land.client.ts
      land.slice.ts
      land.selectors.ts
    credits/
      credits.client.ts
      credits.slice.ts
      credits.selectors.ts

文件夹组织原则

  • 基于功能 - 按业务领域分组,而不是按技术角色

  • 同一位置 - 将相关代码放在一起

  • 清晰分离 - 区分远程数据(.client.ts)和本地状态(.slice.ts)

Store 配置

store 必须使用 RTK 的 configureStore 进行配置,并包含所有必要的中间件。

基础 Store 设置

配置选项

可序列化检查

该 serializableCheck 中间件会验证所有状态是否可序列化。将其配置为忽略已知例外:

开发工具

在开发环境中启用 Redux DevTools 以便调试:

对于生产环境调试(如有需要),请使用特定配置:

类型化 Hooks

创建 useDispatch 和 useSelector 的类型化版本,以获得更好的类型推断和开发体验。

Hook 设置

组件中的用法

类型化 Hooks 的优势

  1. 自动补全 - 为状态结构提供完整的 IntelliSense

  2. 类型安全 - 在编译时捕获错误

  3. 重构 - 更有信心地重命名状态属性

  4. 更少样板代码 - 无需反复指定 RootState 重复

Provider 设置

使用 Redux Provider 包裹你的应用:

Next.js App Router

Next.js Pages Router

React (Vite/CRA)

环境配置

配置特定于环境的设置:

类型定义

创建共享类型定义以保持一致性:

多个 Store 实例

用于测试或微前端时,您可能需要多个 store 实例:

最佳实践

1. 单一 Store

始终为每个应用使用单一 store 实例:

2. 延迟加载 Reducer

对于代码分割,可动态注入 reducer:

3. 热模块替换

在开发环境中为 reducer 启用 HMR:

4. 状态持久化

在使用 redux-persist 时,请谨慎配置:

下一步

最后更新于