【发布时间】:2020-01-04 16:43:47
【问题描述】:
问题:用 key = 1 更新 devData 数组中的对象:-> 更新 data 和 dateTime强>
//Redux state:
{
info: {
success: true,
devData: [
{
key: 1,
data: { <- update this
power: 48 ,
unit: "kWh"
},
dateTime: "2019-08-24T18:21:21.000Z" <- update this
},
{
key: 2,
data: {
power: 48,
unit: "kWh"
},
dateTime: "2019-08-24T18:21:01.000Z"
}
]
}
}
我在reducer中的更新方法:
switch (action.type) {
case 'update':
return {
...state,
info: {
...state.info,
devData: state.info.devData.map(currentValue => {
if (currentValue.key === 1) {
currentValue.data = action.payload.data;
currentValue.dateTime = action.payload.dateTime;
}
return currentValue;
})
}
};
}
我的问题:
我的更新方法复杂难看,难懂
我不确定,我是否真的以不可变方式进行此更新
我认为我的更新方法计算成本高,效率不高
我需要一种更新方法来解决上述问题。
【问题讨论】:
-
你为什么不使用
immer? github.com/immerjs/immer -
@zynkn 可以吗,如果你用 immer 向我提供等效的更新代码。
-
建议你试试 redux-starter-kit
-
@Ramyar 如果您向我提供与 react-starter-kit 等效的更新代码,可以吗?
标签: javascript redux updates immutability reducers