Immutable初步学习

Immutable数据类型
  1. List 有序可重复的列表,对应于Array,列表是完全持久化的,
  2. Map 无序键值对集合,对应与Object
  3. Set 无序且不可重复的键值对
贴个网址

Immutable document link

Immutable
  1. immutable是一种持久化数据。一旦被创建就不会被修改。修改immutable对象的时候返回新的immutable。但是原数据不会改变。

  2. fromJS:将普通的对象和数组转换为immutable

  3. fromJS有两个参数,

  4. 在这里插入图片描述

  5. toJS:将immutable转换为js

  6. Map

  7. delete:返回一个不包括这个键的新 Map

  8. deleeIn: 返回已删除此 keyPath 处的值的新 Map。如果 keyPath 中的任何键不存在,则不会发生任何更改。

  9. merge:
    1. Map的键都相同,将使用最后一个要合并的Map中的重复键的值。
    2. (类型合并为最后一个Map的类型)

  10. mergeDeep:
    1. 无论嵌套层次结构的深度,都会被递归合并
    2. (类型合并为原Map的类型)

  11. List

  12. delete: This is synonymous with list.splice(index, 1).

  13. deleteIn:返回已删除此 keyPath 处的值的新列表。如果 keyPath 中的任何键不存在,则不会发生任何更改。

  14. 获取immutable中的值

  15. get和getIn

实际使用
  1. 获取某值
    state.get('key'): 获取List或者某个key值
    state.getIn(['key', index): 获取List中index索引的值
    state.getIn(['key', 'key2'): 获取Map中key2的值

  2. 设置值
    state.setIn(['key', itemIndex, 'key2'], 0): 更新key中索引为itemIndex中的key2的值为0
    state.setIn(['key', itemIndex], fromJS({ ...itemFind })): 更新key中索引为itemIndex的值为处理为Immutable Map数据类型的itemFind
    state.updateIn(['key', 'key2'], key2=> key2.concat(fromJS([])));: 更新key中key2,对key2进行处理
    newState = newState.updateIn(['key', 'key2', index], () => item): 更新key中的key2中索引为index的值为item

  3. 查询
    state.hasIn(['key', 'key2']): 查询key中是否有key2

  4. 转化为Immutable数据类型
    Immutable.fromJS(value)

Tips
  1. fromJS()和toJS进行深度数据转换,开销较大,尽可能避免使用
Reference website

https://blog.youkuaiyun.com/qq_42941302/article/details/111834035

https://www.jianshu.com/p/728a1afce96d

https://zhuanlan.zhihu.com/p/169610450

https://www.jianshu.com/p/de7115867c3c

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值