呼...这已经是今天的第三篇博文了。好久没写了,一下子写这么多感觉有点头晕。出来闲逛还要还钱,谁让我这么懒,没有按照我的计划更新博文……好了,废话不多说,继续上一篇。在上一篇文章中,我们介绍了一个非常好用的第三方插件immutability-helper,它已经被大部分React开发者所接受,并且已经在React项目中使用。至于它的价值,我想我在上一篇博文中已经讲的很清楚了,这里就不再赘述了。下面我们将介绍上一篇文章遗留下来的5条指令。immutability-helper命令$merge,顾名思义,就是用来合并的。合并什么?合并文字对象!以什么方式?浅合并!varupdate=require("不变性助手");const数据={a:5,b:3};constdata2=update(data,{$merge:{b:6,c:7}});安慰。日志(数据2);输出结果:很简单,就是将$merge指令对应的参数合并到update函数的第一个参数中,输出另一个内容相同的文字对象。从运行结果可以看出,后者会覆盖前者的部分属性(在属性名相同的情况下,如:属性b)。$apply命令有点类似于$set,两者都可以用来更新一个对象的一个??属性值。但是,与$set不同的是,$apply传入一个函数,并将函数的返回值更新为指定的属性值。让我们使用$setvarupdate=require("immutability-helper");的例子重写一个例子constdata={'id':0,name:'小明'};constdata2=update(data,{name:{$apply:function(name){console.log(name);return'李小姐'}}});控制台日志(数据,数据2);输出:可以看到$apply对应的方法已经传入了指定属性的初始值,然后将返回值重置为name属性。过程很简单!但是这个例子并不好,因为我们没有对传入的属性值做任何操作,所以$apply多用于在设置属性值之前有一些逻辑操作的时候。比如数值+1或者字符串转为大写等。。。下面这两条指令在日常开发中几乎用不到,至少博主是这样的。$add$add用于向Map或Set对象中添加元素,这里我们使用Map来进行演示。letupdate=require("immutability-helper");letmyMap=newMap();myMap.set('a','1');constmyMap2=update(myMap,{$add:[['foo','bar'],//每个数组的第一个元素作为键,第二个元素作为值['baz','boo']]})for(letkeyofmyMap.keys()){console.log(key);}console.log('----------------');for(letkeyofmyMap2.keys()){console.log(key);}因为Map和Set是从ES6开始才有的,所以……感人!输出结果:$remove$remove与$add完全相反,letupdate=require("immutability-helper");letmyMap=newMap();myMap.set('a','1');constmyMap2=update(myMap,{$add:[['foo','bar'],['baz','boo']]})constmyMap3=update(myMap2,{$remove:['foo']//要删除的键的集合})for(letkeyofmyMap.keys()){console.log(key);}console.log('----------------');for(letkeyofmyMap2.keys()){console.log(key);}console.log('-----------------');for(letkeyofmyMap3.keys()){console.log(key);}输出:用法也简单明了。至此,immutability-helper就全部介绍完了。同时,作者也声明,本博客将在很长一段时间内重点关注React的新特性。比如最近火热的ReactHook,也会是笔者重点关注的特性。让我们等着看!!下次见...
