2017-04-06 30 views
1

我只是不明白爲什麼要使用immutable.js及其方法(設置,地圖等)的優勢,因爲我們可以這樣在redux上使用immutable.js有什麼意義?

state = { 
      ...state, 
      width: 'small' 
      }; 

在終極版設置狀態有什麼不同,從

state.set('width', 'small'); 
+0

您正在比較蘋果和橘子。 – WilomGfx

+1

因爲第一個是可變的。 –

+0

第一個我可以返回'{}',或者如果我覺得它可能'{width:'small'}'或者由於某種原因我決定改變數據類型並返回'[]'第一個例子是可變的,你可以改變它爲任何東西,如果你輸入錯誤的話可能會破壞你的應用程序。 –

回答

1

這裏有兩個優點使用一成不變的與終極版:

  1. 開發者犯錯誤所有的時間,這是很容易在你的減速inste意外發生變異狀態克隆它的廣告。這個錯誤會在一段時間內「未被捕獲」,然後在你最不期待的時候點擊你。如果你搞砸了,ImmutableJS會很快給你一個錯誤。
  2. 性能:ImmutableJS利用了事物的不可變性質,並且能夠使用數據結構和算法,可以支持收集操作,如添加/刪除/修改更好的空間效率比典型的「複製收集和修改複製「,當我們必須自己寫它時,我們傾向於這樣做。
+0

3.便利性:當你想要改變以下部分的嵌套結構:'.setIn(['products','productX','cost' ],500)並知道'products'和'productX'將是新對象,但'productY'不會手動編寫該邏輯(返回到第1點) – dpwrussell