React 词条目录
前端Wiki/词条/Redux 状态管理

Redux 状态管理

定义可预测的全局状态容器:单一数据源 + 纯函数 reducer + 订阅更新

Redux 三原则:单一 store(整个应用一份状态树,可直接序列化调试/回退)、状态只读(不能直接改,只能 dispatch action 描述「发生了什么」)、纯函数变更(reducer 接收旧状态与 action 返回新状态,副作用隔离在中间件)。它把状态变化做成可追踪的事件流,DevTools 里每一步都能回放。

Redux Toolkit(RTK)是官方现代化的写法:createSlice 自动生成 action/reducer、configureStore 默认集成 immer(写「可变」代码改不可变状态)、createAsyncThunk 处理异步。选型上:大型应用/有复杂状态流转与时间旅行调试需求选 Redux;中小应用 Zustand/Jotai 更轻;简单共享用 Context 就够。

HTML
const { configureStore, createSlice, useSelector, useDispatch, Provider } = RTK;

// ★ createSlice:一个切片 = 状态 + 同步 reducers
const counter = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    // immer 让你「直接改」状态,自动产出不可变更新
    increment: (state) => { state.value += 1; },
    add: (state, action) => { state.value += action.payload; },
  },
});
export const { increment, add } = counter.actions;

// 单一 store
const store = configureStore({ reducer: { counter: counter.reducer } });

// 组件:useSelector 订阅 + useDispatch 派发
function Counter() {
  const n = useSelector(s => s.counter.value);
  const dispatch = useDispatch();
  return <button onClick={() => dispatch(increment())}>{n}</button>;
}

// 根部:<Provider store={store}><Counter /></Provider>
⚠ 常见误区
🔗 相关词条Context 跨层通信Vue 与 React 对比状态管理选型
← 返回来源章节状态管理选型