React概念:不變性

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