AX 爱鲜报

Redux

Redux 是 JavaScript 生态中经典的全局状态管理库,核心体积仅约 2kB,可配合 React 等任意视图层使用。官方推荐用 Redux Toolkit 编写逻辑,内置最佳实践,并提供时间旅行调试等开发体验。

爱鲜报评分

0.0

0 人评分

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 并非所有项目都必需。当出现以下情况时值得考虑:

  • 有合理数量的数据随时间变化
  • 需要状态的单一数据源
  • 把所有状态放在顶层组件已不再够用

官方也提醒:不要因为别人说该用就用,先理解其收益与取舍。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。