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 中间件会验证所有状态是否可序列化。将其配置为忽略已知例外:
永远不要完全 serializableCheck 禁用。 相反,应配置例外,并将不可序列化数据保留在 Redux 之外。
开发工具
在开发环境中启用 Redux DevTools 以便调试:
对于生产环境调试(如有需要),请使用特定配置:
类型化 Hooks
创建 useDispatch 和 useSelector 的类型化版本,以获得更好的类型推断和开发体验。
Hook 设置
组件中的用法
类型化 Hooks 的优势
自动补全 - 为状态结构提供完整的 IntelliSense
类型安全 - 在编译时捕获错误
重构 - 更有信心地重命名状态属性
更少样板代码 - 无需反复指定
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 时,请谨慎配置:
下一步
最后更新于