Immutable.js学习笔记

1.Immutable.js是什么

Immutable.js能将对象转化为不可变的对象,常用于深拷贝,每次修改一个Immutable对象时都会创建一个新的不可变的对象,在新对象上操作并不会影响到原对象的数据。

2.为什么要使用Immutable.js

由于旧有的深拷贝方法都多多少少有着一些缺陷,比如[...obj]和Object.assign()只是一级属性复制, 比浅拷贝多拷贝了一层而已,当使用这两种方法去实现深拷贝的时候,我们不得不去遍历层级,一旦遇到层级较为复杂的对象就十分棘手。而JSON.parse(JSON.stringify(obj))实现的深拷贝,无法处理有undefined存在的情况,因此,Immutable.js就出现了。

3.Immutable.js是怎么实现的

Immutable.js实现的原理是持久化数据结构,当我们使用旧数据创建新数据的时候,要保证旧数据同时可用且不变。同时为了避免在深复制的过程中将所有节点都复制一遍带来性能损耗,Immutable.js采用了结构共享,当一个节点发生变化时,他和他的父节点将会改变,使用新的来替换,但是其他节点则进行共享。

4.Immutable.js引入的方法

npm i immutable下载

import {Map} from' immutable使用Map类型

Immutable常用的类型(Map、List)

Map

var oldImmuobj = Map( obj )

使用set修改

var newImmuobj = oldImmuobj . set ( " name", "xiaoming" )

使用get访问

newImmuobj . get ( " name" )

List

import {List} from' immutable

var arr = List([1,2,3])

可以使用JS操作数组的方法操作,获取的时候直接arr.toJS()就可以了。

5.为何React要尽量避免修改原数据

这是因为React提倡不可变性,就像是React中通过setState()修改数据,也是通过创建一个副本来代替原来的state,这样来更新数据的效率要比在原数据上进行修改要高的多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值