如何在不改变整个树的情况下更新嵌套的不可变Map项?
示例:
var tree = Map({
branch1:Map([]),
branch2:Map({ 1: Map({id:1,value:'hello'}) }),
});
如何更新tree.branch2.1.value?
这会导致branch1获得新副本吗?
我在Reactjs Redux应用程序中使用它。既然我也在使用选择器,我想在不使用changin branch1的情况下更改branch2
的值,以便选择器不再重新计算
答案 0 :(得分:3)
更改Immutable.js对象中的值将始终返回一个全新的对象而不是改变它。这基本上是图书馆的重点。如果您担心根据状态更改的其他方面进行不必要的重新渲染,则应使用 <plugin name="cordova-plugin-touch-id" source="npm" spec="~3.2.0" />
生命周期方法确保组件仅在该部分的值时更新。应用程序状态发生变化,而不仅仅是它是一个新对象。
对于您的情况,使用setIn方法对不可变地图最有意义。
shouldComponentUpdate