Immutablejs常用API

380 阅读1分钟

Map

Map: 无序索引集,类似JavaScript中的Object。用于操作Object

// Map:原生object转Map对象 (只会转换第一层)
let imMap = Immutable.Map({name:'zhangsan', age:18})
// get:获取Map中的数据
imMap.get('name');
// set:设置Map中的数据
let imSetData = imMap.set("name","danny2");
console.log(imSetData.get("name"));

List

List: 有序索引集,类似JavaScript中的Array。用于操作Array

var imList = Immutable.List([{age:18},{age:28},{age:38}])
// count获取总数
for (var i = 0; i < imList.count(); i++){
     console.log(imList.getIn([i, 'age']))
}

is()

用法:fromJS(map1, map2)
作用:对两个对象进行比较

const map1 = Immutable.Map({a: '11', b: '2'})
const map2 = Immutable.Map({a: '11', b: '2'})
console.log(Immutable.is(map1, map2))    // true

fromJS()

用法:fromJS(value, converter)
作用:将js数据转换为Immutable类型的数据。( 深度转换,会将内部嵌套的对象和数组全部转成immutable类型 )

value是要转变的数据,converter是要做的操作。第二个参数可不填,默认情况会将数组准换为List类型,将对象转换为Map类型,其余不做操作。

const obj = Immutable.fromJS({name:'danny', age:18, children: {name: 'Sampson'}});

toJS

用法:value.toJS() 作用:将一个Immutable数据转换为JS类型的数据。( 深度转换,会将内部嵌套的Map,fromJS和List全部转换成原生js )

getIn()、setIn()、updateIn()

getIn作用:获取数据结构中的数据
setIn()作用:设置深层结构中某属性的值
updateIn()用法参考setIn()

const imData = imData.setIn(['children','name'], 'Sampson2')
console.log(imData.getIn(['children','name']))

...