Aru*_*ven 5 updates reactjs immutable.js redux
我正在尝试更新-> 内部的两个(width
&x
)值,如下所示:items
yrgroih9
{
appElements: {
layers: {
layer_1: {
background: {
width: '100px',
height: '100px',
bgColor: '#aaaaaa',
bgImage: 'http:bgimage1.png'
},
items: {
yrgroih9: {
width: '100px',
x: '200px',
y: '200px'
},
qhy0dukj: {
width: '100px',
x: '200px',
y: '200px'
},
'7lw2nvma': {
width: '100px',
x: '200px',
y: '200px'
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
用于在 items
->中更新新对象的代码yrgroih9
:
case 'UPDATE_OBJECT':
return state.setIn(["appElements","layers","layer_1","items","yp57m359"],{
["width"]: action.objData.width,
["x"]: action.objData.x
});
Run Code Online (Sandbox Code Playgroud)
上面的代码删除y
了当前位置内的键,yrgroih9
并更新了width
和x
值。
Redux存储在setIn:之后排列的数据(来自chrome redux devtools):
如何在不删除其他键值的情况下更新两个深度值?
使用updateIn。
如果您的项目是Immutable.js地图的实例:
case 'UPDATE_OBJECT':
return state.updateIn(['appElements', 'layers', 'layer_1', 'items', 'yrgroih9'],
(item) => item
.set('width', action.objData.width)
.set('x', action.objData.x)
);
Run Code Online (Sandbox Code Playgroud)
如果您的项目是普通的JS对象:
case 'UPDATE_OBJECT':
return state.updateIn(['appElements', 'layers', 'layer_1', 'items', 'yrgroih9'],
(item) => ({
...item,
width: action.objData.width,
x: action.objData.x,
})
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1559 次 |
最近记录: |