函式庫 / SDK
reduxjs/redux avatar
reduxjs/redux

Redux:把全局状態收束到可追踪數據流

用於可預測的全域狀態管理的 JS 庫。您可以將 Redux 與 React 或任何其他視圖庫一起使用。

61,486 個 Star15,177 個 ForkTypeScriptMIT

秒懂

它是什麼?
Redux 用单一 store、action 和纯 reducer 組织持续變化的應用状態,官方建议新項目從 Redux Toolkit 和現成模板開始。
適合誰用?
适合需要跨組件共享、随时间變化且希望保留单一事實来源的應用团队;不适合只有局部短生命周期状態的小頁面。先用 Redux Toolkit 模板跑通一次 dispatch、reducer 和订阅更新,再检查現有状態是否真的超過組件层能够清晰管理的範围。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 7 天前。
用什麼語言寫的?
主要是 TypeScript(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

单一 store 如何留下可追踪的状態路径

README 開篇将 Redux 描述為一個用于可预測且可维护的全局状態管理的 JS 庫。它解释了應用的整個全局状態存在于一個单一 store 内的对象树中。改變该状態树的唯一方法是创建一個 action(描述所發生事件的对象)并将其 dispatch 到 store。Reducer 函數以纯函數形式编寫,根據旧状態和 action 计算新状態。README 中的基本示例展示了一個计數器 slice 的流程,使用了 Redux Toolkit 的 createSlice 和 configureStore。即使使用 Redux Toolkit,底层數據流也是一样的:订阅者可以监听 store,并 dispatch action 对象。

针对单一 store 如何留下可追踪的状態路径,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

Toolkit 如何缩短 reducer 與 store 配置

README 指出,Redux Toolkit 是编寫 Redux 逻辑的官方推荐方法。它包装了 Redux 核心,并包含了構建 Redux 應用所必需的包和函數。根據 README,Redux Toolkit 内置了建议的最佳實践,简化了大多數 Redux 任務,防止常见錯誤,并使编寫 Redux 應用更加容易。基本示例展示了 Toolkit 如何允許编寫更短、更易讀的逻辑,同时仍然遵循原始核心行為和數據流。倉庫还链接到 redux-toolkit.js.org 以獲取 API 参考和使用指南。

针对Toolkit 如何缩短 reducer 與 store 配置,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

Vite 與 Next.js 的官方起步入口

README 给出了两种使用 Redux Toolkit 启動新的 React 應用的推荐方式。对于 Vite,它建议使用官方的 Redux Toolkit 加 TypeScript 模板,可以通過 degit 克隆和提取:`npx degit reduxjs/redux-templates/packages/vite-template-redux my-app`。对于 Next.js,它指向 `with-redux` 模板:`npx create-next-app --example with-redux my-app`。两者都已為相應的構建工具配置了 Redux Toolkit 和 React-Redux。对于向現有應用添加 Redux Toolkit,命令是 `npm install @reduxjs/toolkit react-redux`,对于单独的核心庫,则是 `npm install redux`。目前还没有官方的 React Native 模板;README 链接了社区提供的 React Native 和 Expo 模板。

针对Vite 與 Next.js 的官方起步入口,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

Essentials、Fundamentals 與问题讨论

Redux 核心文档位于 redux.js.org,包含教程、使用指南、FAQ 和 API 参考。Redux Toolkit 文档位于 redux-toolkit.js.org。README 指出了两條学习路径:Redux Essentials 教程,被描述為自上而下地介绍如何以正确方式使用 Redux;Redux Fundamentals 教程,则從第一原理出發自下而上地解释 Redux 的工作原理。对于问题,README 将 Reactiflux Discord 社区的 #redux 频道指定為官方资源。它还链接到一些關于何时使用 Redux 的博客文章和讨论,包括 'You Might Not Need Redux' 和 'The Tao of Redux'。

针对Essentials、Fundamentals 與问题讨论,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

何时状態規模足以支撑 Redux

README 包含一個名為 'Before Proceeding Further' 的部分,建议不要仅仅因為别人说應该用 Redux 就使用它。它列出了三种适合使用 Redux 的情况:你有合理數量的數據随时间變化;你需要状態的单一事實来源;或者将所有状態保存在顶层組件中已不再足够。README 承认這些指导是主观且模糊的,因為集成 Redux 的合适时机因用户和應用而异。它链接了外部文章来詳細说明權衡,例如 'When (and when not) to reach for Redux'。README 没有提供比這些標准更精确的决策流程。

针对何时状態規模足以支撑 Redux,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

2kB 核心、语义化版本與 MIT 边界

倉庫元數據将項目语言描述為 TypeScript,README 指出 Redux 核心很小,包括依赖在内约 2kB。項目遵循语义化版本控制,每個版本以及遷移说明都记錄在 GitHub Releases 頁面上。代码根據 MIT 許可證授權,版權归 Dan Abramov 所有。MIT 許可證文本授予使用、复制、修改、合并、發布、分發、再許可和销售軟件副本的權利,前提是包含版權声明。它还声明軟件按 '原样' 提供,不提供任何形式的保證,作者或版權持有人不对任何索赔或损害承担责任。该許可證没有涉及支持、安全性或未来的维护承诺。

针对2kB 核心、语义化版本與 MIT 边界,應把 README 已寫明的輸入、輸出和限制作為驗收边界。对這個項目,最有价值的核驗不是比较星標,而是在模板中打開 Redux DevTools,依次触發一個 slice 的 action,观察 state tree 是否按预期更新,并确认异步逻辑是否仍沿用团队能维护的 Toolkit 寫法。這只能说明文档覆盖的检查点,不能替代項目没有提供的性能、兼容性或安全結论。

第1項核驗針對 Redux:把全局状態收束到可追踪數據流 的文件邊界:把 README 中的安裝入口、命令、設定鍵與輸出格式對應到實際執行結果。針對 reduxjs-redux-deep-analysis,應保留原始輸入、執行環境、終端輸出、錯誤路徑和產生檔案;若流程依賴網路、模型、資料庫或作業系統權限,還要記下依賴失效時的具體反應。這些紀錄能分辨是輸入格式不符、設定未載入、外部服務失敗,還是專案本身的處理限制。

編輯結論

适合需要跨組件共享、随时间變化且希望保留单一事實来源的應用团队;不适合只有局部短生命周期状態的小頁面。先用 Redux Toolkit 模板跑通一次 dispatch、reducer 和订阅更新,再检查現有状態是否真的超過組件层能够清晰管理的範围。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記