Redux
Redux 是 JavaScript 生态中经典的全局状态管理库,核心体积仅约 2kB,可配合 React 等任意视图层使用。官方推荐用 Redux Toolkit 编写逻辑,内置最佳实践,并提供时间旅行调试等开发体验。
爱鲜报评分
0.0
0 人评分
开源 · MIT
#JavaScript
#TypeScript
#React
#前端
#状态管理
61k
星数
否
中文
TypeScript
主语言
是
活跃
1082
贡献者
人工分析
EDITORIAL推荐理由
Redux 是前端状态管理领域事实上的标准方案,生态成熟、文档完善、社区庞大,遇到问题几乎都能找到答案。官方已明确推荐使用 Redux Toolkit 作为主要写法,大幅降低了样板代码与常见错误。对于中大型 React 应用或需要单一数据源、可预测状态变更的项目,仍是稳妥选择。
适用场景
- React 中大型应用全局状态管理
- 需要单一数据源与可预测状态变更的项目
- 跨端(Web/服务端/React Native)共享状态逻辑
- 需要时间旅行调试与状态快照的开发场景
- 多人协作、状态逻辑需要严格规范的团队项目
优点
- 生态成熟,配套工具与中间件丰富
- 核心体积小(约 2kB),可按需组合
- 单向数据流与纯函数 reducer,状态变更可预测、易测试
- Redux Toolkit 内置最佳实践,减少样板代码
- DevTools 支持时间旅行调试,开发体验好
缺点
- 概念较多(action、reducer、store、中间件),新手有学习曲线
- 小型项目直接使用可能显得过度设计
- 需自行判断是否真的需要全局状态管理,官方也提醒不要盲目引入
- 核心库与 Toolkit 文档分散在两个站点,查阅需切换
上手难度
进阶
Redux 是什么
Redux 是一个用于可预测、可维护的全局状态管理的 JavaScript 库。它帮助开发者编写行为一致、可运行于客户端/服务端/原生环境、且易于测试的应用,并提供时间旅行调试等优秀的开发体验。
Redux 核心非常小巧(含依赖约 2kB),可搭配 React 或任意其他视图库使用,并拥有丰富的插件生态。
核心思想
- 整个应用的全局状态存放在一个 store 的对象树中
- 改变状态的唯一方式是创建描述「发生了什么」的 action 对象并 dispatch 到 store
- 通过纯函数 reducer 根据旧状态与 action 计算出新状态
推荐写法:Redux Toolkit
官方推荐使用 Redux Toolkit 编写 Redux 逻辑,它封装了核心库并内置最佳实践,简化大部分任务、避免常见错误。
import { createSlice, configureStore } from '@reduxjs/toolkit'
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
incremented: state => { state.value += 1 },
decremented: state => { state.value -= 1 }
}
})
export const { incremented, decremented } = counterSlice.actions
const store = configureStore({ reducer: counterSlice.reducer })
store.dispatch(incremented())
借助 Immer,reducer 中可以写「看似可变」的逻辑,实际仍产出不可变的新状态。
快速开始
React + Redux Toolkit 的常见组合:
npm install @reduxjs/toolkit react-redux
也可使用官方 Vite 模板或 Next.js 的 with-redux 模板快速创建示例应用。
学习路径
- Redux Essentials:自顶向下,教你「如何正确使用 Redux」,推荐先读
- Redux Fundamentals:自底向上,从第一性原理讲清 Redux 如何工作
- 官方文档:https://redux.js.org ,Toolkit 文档:https://redux-toolkit.js.org
使用建议
Redux 并非所有项目都必需。当出现以下情况时值得考虑:
- 有合理数量的数据随时间变化
- 需要状态的单一数据源
- 把所有状态放在顶层组件已不再够用
官方也提醒:不要因为别人说该用就用,先理解其收益与取舍。
评论
- 暂无评论,来写第一条吧。