文档getting started
一个对象的例子,设置了b的值为50并赋值给了map2,但是在map1中b的值还是2,在map2中的值变成50;
js中对象是引用类型,如果改变了对象内部的值,原对象内容也会改变;
immutablejs 的这个Map包裹的对象修改了b的值在map1中没变化,返回了一个修改后的对象,immutable基本作用就是如此了,可以帮我们省去很多对象深拷贝的操作。
常用api
List.isList() 和 Map.isMap()
作用:判断一个数据结构是不是List/Map类型
用法:
List.isList(maybeList: any): boolean
Map.isMap(maybeMap: any): boolean
first() 、 last()
作用:用来获取第一个元素或者最后一个元素,若没有则返回undefined
set()、 setIn()
设置值,同getting started demo,是返回一个新对象,而不是在原有基础上进行的修改。修改原有对象可以用update()方法
setIn()
作用:设置深层结构中某属性的值
用法:
setIn(keyPath: Iterable<any>, value: any): this
用法与set()一样,只是第一个参数是一个数组,代表要设置的属性所在的位置
update()、updateIn()
作用:对对象中的某个属性进行更新,可对原数据进行相关操作
用法:
update(index: number, updater: (value: T) => T): this //List
update(key: K, updater: (value: V) => V): this //Map
代码示例:
////List
const list = List([ 'a', 'b', 'c' ])
const result = list.update(2, val => val.toUpperCase()) //注意传入的会回调函数是有返回值
///Map
const aMap = Map({ key: 'value' })
const newMap = aMap.update('key', value => value + value)
updateIn()
用法参考setIn()
参考
https://www.cnblogs.com/chris-oil/p/8492349.html
https://www.npmjs.com/package/immutable
https://www.jianshu.com/p/0fa8c7456c15