什麼是 immutable?為什麼要使用它?
immutable
是一種持久化資料。一旦被建立就不會被修改
對
Immutable
對象的任何修改或添加删除操作都會傳回一個新的
Immutable
對象
Immutable
實作的原理是 Persistent Data Structure(持久化資料結構)
- 用一種資料結構來儲存資料
- 當資料被修改時,會傳回一個對象,但是新的對象會盡可能的利用之前的資料結構而不會對記憶體造成浪費
- 如果對象樹中一個節點發生變化,隻修改這個節點和受它影響的父節點,其它節點則進行共享

- List: 有序索引集,類似 JavaScript 中的 Array
- Map: 無序索引集,類似 JavaScript 中的 Object
- Set: 沒有重複值的集合
- 用 Immutable可以給 React 應用帶來性能的優化,主要展現在減少渲染的次數
- 在做react性能優化的時候,為了避免重複渲染,我們會在shouldComponentUpdate()中做對比,當傳回true執行render方法,Immutable通過is方法則可以完成對比,而無需像一樣通過深度比較的方式比較
- 在使用redux過程中也可以結合Immutable,不使用Immutable前修改一個資料需要做一個深拷貝
import Immutable from 'immutable';
foo = Immutable.fromJS({a: {b: 1}});
bar = foo.setIn(['a', 'b'], 2); // 使用 setIn 指派
console.log(foo.getIn(['a', 'b'])); // 使用 getIn 取值,列印 1
console.log(foo === bar); // 列印 false