跳到主要內容

Redux 常見問題:一般

我什麼時候應該學習 Redux?

對於 JavaScript 開發人員來說,要學習什麼可能是一個令人不知所措的問題。透過一次學習一件事,並專注於你在工作中遇到的問題,有助於縮小選項範圍。Redux 是管理應用程式狀態的模式。如果你沒有狀態管理的問題,你可能會發現 Redux 的好處較難理解。某些 UI 函式庫(例如 React)有自己的狀態管理系統。如果你正在使用其中一個函式庫,尤其是如果你剛開始學習使用它們,我們建議你首先學習該內建系統的功能。這可能是建置應用程式所需的一切。如果你的應用程式變得如此複雜,以至於你對於狀態儲存在哪裡或狀態如何變更感到困惑,那麼現在是學習 Redux 的好時機。

提示

我們建議大多數新學習者應先專注於學習 React,等到你已經熟悉 React 之後再學習 Redux。這樣一來,一次要學習的新概念較少,而且哪些概念屬於 React,哪些概念屬於 Redux 也會更清楚。你還會更了解如何在 React 應用程式中使用 Redux,以及 Redux 為何有用。

更多資訊

文章

討論

我什麼時候應該使用 Redux?

並非所有應用程式都需要 Redux。了解你正在建置的應用程式類型、你需要解決的問題類型,以及哪些工具可以最有效地解決你所面臨的問題非常重要。

Redux 可協助你處理共用狀態管理,但與任何工具一樣,它有其權衡。它並非設計成撰寫程式碼的最短或最快的方式。它的目的是幫助回答「狀態的某個區塊何時變更,資料從何而來?」這個問題,並具有可預測的行為。有更多概念要學習,更多程式碼要撰寫。它也會為你的程式碼增加一些間接性,並要求你遵循某些限制。這是短期和長期生產力之間的權衡。

正如 React 的早期貢獻者之一 Pete Hunt 所說

當你需要的 Flux 時,你會知道。如果你不確定是否需要它,那你就不需要。

同樣地,Redux 的創建者之一 Dan Abramov 說道

我想修改一下:在使用原生 React 出現問題之前,不要使用 Redux。

Redux 在以下情況下最為有用:

  • 你的應用程式狀態龐大,且在應用程式的許多地方需要使用
  • 應用程式狀態頻繁更新
  • 更新該狀態的邏輯可能很複雜
  • 應用程式具有中型或大型程式碼庫,且可能由許多人共同開發
  • 你需要查看該狀態如何隨著時間推移而更新

還有許多其他工具可用於解決 Redux 所解決的一些相同問題:狀態管理、快取已擷取的伺服器資料,以及透過 UI 傳遞資料。

資訊

如果你不確定 Redux 是否適合你的應用程式,這些資源提供了一些進一步的指導

最終,Redux 只是一個工具。它是一個很棒的工具,而且有許多很好的理由可以使用它,但也有理由讓你可能不想使用它。對你的工具做出明智的決定,並了解每個決策所涉及的取捨。

進一步的資訊

文件

文章

討論

Redux 只能與 React 搭配使用嗎?

Redux 可作為任何 UI 層的資料儲存。最常見的用法是搭配 React 和 React Native,但有可供 Angular、Angular 2、Vue、Mithril 等使用的繫結。Redux 僅提供一個訂閱機制,可供任何其他程式碼使用。話雖如此,當與可從狀態變更推論 UI 更新的宣告式檢視實作結合時,例如 React 或其他類似的可用函式庫,會最有幫助。

我需要具備特定的建置工具才能使用 Redux 嗎?

Redux 是使用現代 JS 語法(ES2020)撰寫的,但程式碼相當簡單。

如果你需要鎖定舊版瀏覽器,請自行轉譯。

counter-vanilla 範例展示了將 Redux 包含為 <script> 標籤的基本 ES5 用法。相關的 pull request 中提到

新的 Counter Vanilla 範例旨在消除 Redux 需要 Webpack、React、熱載入、sagas、動作建立器、常數、Babel、npm、CSS 模組、裝飾器、流利的拉丁文、Egghead 訂閱、博士學位或超過預期的 O.W.L. 等級的神話。

不,它只是 HTML、一些手工 <script> 標籤,以及純粹的 DOM 處理。享受吧!