Redux通过单一不可变状态树集中管理应用状态,确保数据一致性与可预测性;状态更新需通过派发action触发,经由纯函数reducer处理并返回新状态,从而实现可追踪、可调试的状态变更流程。

Redux 是一个用于 JavaScript 应用的状态管理容器,常用于管理 React 应用中的全局状态。它的核心思想是将整个应用的状态集中存储在一个单一的、不可变的状态树中,并通过明确的规则来控制状态的更新。
单一数据源
Redux 使用一个称为 store 的对象来保存整个应用的状态。这个状态树只读,不能直接修改。所有组件都可以从 store 中获取所需的状态,确保数据的一致性和可预测性。
这种设计让调试更简单,因为你可以追踪到每一次状态变化的来源,也可以轻松实现时间旅行调试(即回放操作)。
状态是只读的
在 Redux 中,不能直接更改状态。要改变状态,必须显式地发出一个 action。Action 是一个普通的 JavaScript 对象,描述发生了什么事件,例如:
立即学习“Java免费学习笔记(深入)”;
{
type: 'ADD_TODO',
payload: '学习 Redux'
}
action 只是一个通知,告诉系统“某事发生了”,但不负责处理逻辑。
使用纯函数执行状态变更
reducer 是一个纯函数,接收当前 state 和 action 作为参数,返回一个新的 state。它决定了状态如何根据 action 进行变化。
reducer 必须是纯函数,意味着:
- 相同的输入永远产生相同的输出
- 不修改原始 state,而是返回新对象
- 没有副作用(如 API 调用、异步操作等)
例如:
function todoReducer(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
return [...state, action.payload];
default:
return state;
}
}
Store 的作用
store 是 Redux 的核心实例,它将 state、action 和 reducer 整合在一起。通过 createStore(或现代 Redux Toolkit 中的 configureStore)创建 store。
store 提供几个关键方法:
- getState():获取当前状态树
- dispatch(action):触发 action,从而启动状态更新流程
- subscribe(listener):注册监听器,在状态变化时执行回调
当 dispatch 一个 action 后,store 会调用 reducer 函数,生成新的 state,然后通知所有订阅者视图更新。
基本上就这些。Redux 的设计虽然看似繁琐,但通过约束状态更新的方式,提升了代码的可维护性和可预测性。尤其在大型应用中,这种集中式管理非常有效。










