Skip to content
目录

Redux 核心架构概述

Redux 是可预测的全局状态容器:状态只从 单一 store 读出,只通过 dispatch(action) 改变,改变方式由 纯 reducer 描述。现代应用多通过 Redux Toolkit (RTK) 使用,但核心仍是下面三条。


1. 三大原则

原则含义工程收益
单一数据源一棵 state 树在一个 store调试、SSR 序列化、时间旅行
状态只读只能 dispatch plain action变更可记录、可回放
纯函数 reducer(state, action) => nextState可测、可组合、无副作用

违反示例:直接 getState().list.push(x)、在 reducer 里 fetch、action 用函数(除非 thunk 中间件吃掉)。


2. 核心组件

mermaid
flowchart LR
  UI -->|dispatch action| M[middleware 链]
  M --> R[reducer]
  R --> S[(store state)]
  S -->|subscribe / useSelector| UI
组件职责
StoregetState / dispatch / subscribe
Action{ type, ...payload } 事件描述
Reducer计算下一状态;常 combineReducers 分 slice
Middleware扩展 dispatch(异步、日志)

专题:02 Store03 Reducer04 Middleware


3. 数据流(一句话)

UI 发 action → middleware → reducer 合并 state → 订阅方读新 state → UI 更新(react-redux 负责组件侧)。


4. 与其它方案

Redux + RTKZustandContext
样板中(RTK 已减)极少
约束
适用大团队、要 DevTools/中间件React 局部/全局轻量态主题、locale

5. Redux 5 / RTK

  • 核心包 TypeScript 类型加强(见 07)。
  • 新项目优先 configureStore + createSlice,不必手写 switch

6. 适用场景

适合:多源同步、要严格追溯变更、复杂异步链、已有 Redux 生态。
可考虑更轻:简单全局态、要快上手 → Zustand。


7. 总结

Redux 用纪律可推理;读源码从 createStorecombineReducers 即可串起全库。后续章节按数据流展开,不重复贴实现代码。

MIT License.