我有两个深度嵌套的数据对象,例如:
myMap.get("dataKey") === maybeNewData // false
Immutable.is(myMap.get("dataKey"), maybeNewData) //maybe true
仅当某些嵌套值发生更改时,我才想用maybeNewData
替换myMap.get(" dataKey")。有没有语法上精确的方法来做到这一点?例如(方法不存在):
const maybeNewMap = myMap.setIfDeepDifferent("dataKey", maybeNewData);
或者我必须这样做吗?:
if (!Immutable.is(myMap.get("dataKey"), maybeNewData)) {
maybeNewMap = myMap.set("dataKey", maybeNewData);
}
答案 0 :(得分:0)
我找到了一个稍好的解决方案:使用update
为.is
检查提供了一个位置:
const maybeNewMap = myMap.update("dataKey", (data) => {
return !Immutable.is(data, maybeNewData) ? maybeNewData : data;
});
如果有更简洁的表达方式,我仍然很好奇。