React概念:不變性

什麼是不變性?它在React世界中扮演怎樣的角色? 在React編程中,你可能會遇到的一個概念就是不變性(和其反面,可變性)。 不管你對不變性的概念有什麼看法,React及其大部分生態系統基本上都強制了這一點,所以你至少需要了解為什麼它如此重要以及它的影響。 在編程中,當變量的值在創建後無法更改時,該變量就是不可變的。 當你操作字符串時,你可能已經在不知不覺中使用了不可變變量。字符串在默認情況下是不可變的,當你改變它們時,實際上是創建了一個新的字符串並將其賦值給同一個變量名。 不可變變量永遠無法更改。要更新其值,你需要創建一個新的變量。 對於對象和數組也是同樣的道理。 要添加新項目,你可以創建一個新的數組,通過連接舊數組和新項目。 在更改對象之前,需要先將其複製。 這個原則在React中有很多應用。 例如,你不應該直接變異組件的state屬性,而是應該通過setState()方法來變更。 在Redux中,你不應該直接變異狀態,而是通過reducer函數來變更。 那麼,為什麼要這樣做呢? 其原因有很多,其中最重要的是: 變異可以集中管理,例如在Redux中,這樣可以提高調試能力並減少錯誤源。 代碼看起來更整潔,更容易理解。你不會預期一個函數在沒有你知曉的情況下改變某個值,這給你帶來了可預測性。當函數不變異對象而只返回一個新對象時,稱為純函數。 函數庫可以對代碼進行優化,例如,JavaScript在將一個舊的對象引用替換為一個全新的對象時,比直接修改現有對象更快。這提升了性能。

學習如何使用 Redux

Redux 是一個狀態管理器,通常與 React 一起使用,但並不限於該庫。通過閱讀這個簡單且易於理解的指南,來學習 Redux。 為什麼需要 Redux 何時應該使用 Redux? 不可變的狀態樹 Actions Action types 應該是常數 Action creators Reducers 什麼是 reducer Reducer 不應該做什麼 多個 reducer reducer 的模擬 狀態 一系列的 actions 每個部分的 reducer 整個狀態的 reducer Store 我可以使用服務器端數據初始化 store 嗎? 獲取狀態 更新狀態 監聽狀態變化 數據流 為什麼需要 Redux Redux 是一個狀態管理器,通常與 React 一起使用,但它並不限於該庫 - 它也可以與其他技術一起使用。React 有自己的狀態管理方式,你可以在 React 初學者指南 中了解有關在 React 中管理狀態的方法。 將狀態向上移動到樹中適用於簡單的情况,但在複雜的應用程序中,你可能會發現你需要將幾乎所有的狀態向上移動,然後再使用 props 將其向下傳遞。 React 在 16.3.0 版本中引入了上下文 API,從不同部分訪問狀態的用例中,這使得 Redux 變得多餘,因此可以考慮使用上下文 API 而不是 Redux,除非你需要 Redux 提供的特定功能。 Redux 是一種管理應用程序狀態並將其移至外部全局存儲區的方法。有一些概念需要掌握,但一旦掌握,Redux 可以非常簡單地解決問題。...