安装 Immutable.js
npm install immutable
引入 Immutable.js
创建不可变对象
import { Map } from 'immutable';
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = map1.set('b', 50);
console.log(map1.get('b')); // 2
console.log(map2.get('b')); // 50
创建不可变列表
import { List } from 'immutable';
const list1 = List([1, 2, 3]);
const list2 = list1.push(4);
console.log(list1.size); // 3
console.log(list2.size); // 4
深度不可变
import { fromJS } from 'immutable';
const deep = fromJS({ a: { b: { c: 1 } } });
const deep2 = deep.setIn(['a', 'b', 'c'], 2);
console.log(deep.getIn(['a', 'b', 'c'])); // 1
console.log(deep2.getIn(['a', 'b', 'c'])); // 2
高效更新和查询
const list = List([1, 2, 3]);
const newList = list.update(1, val => val * 10);
console.log(newList.toJS()); // [1, 20, 3]
与其他库集成
方法 | 描述 |
---|---|
Map() | 创建一个不可变的 Map 对象 |
List() | 创建一个不可变的 List 对象 |
Set() | 创建一个不可变的 Set 对象 |
fromJS() | 将普通的 JavaScript 对象转换为不可变对象 |
set() | 在不可变对象中设置一个新的值,并返回一个新的不可变对象 |
get() | 从不可变对象中获取值 |
update() | 更新不可变对象中的值 |
setIn() | 深度更新不可变对象中的值 |
getIn() | 深度获取不可变对象中的值 |
Immutable.js 提供了一种高效管理复杂状态的方式,特别是在 React 和 Redux 应用中非常有用。希望通过这篇详细介绍,你能更好地理解和使用 Immutable.js。