根据Redux设计模式,如果要更改数组中的对象,则必须使用state.items.map,但是可以使用array.findIndex,并且如果找不到的项返回旧状态?这是不好的做法吗?如果是,为什么呢?
Redux模式方法。即使没有找到空间,方法也会返回新状态。
const roomId = action.payload.room.id;
const roomsList = state.roomsList.map(room => {
if (room.id === roomId) {
return action.payload.room;
} else {
return room;
}
});
return {
...state,
roomsList,
};
第二种方式,我更喜欢。仅当找到具有给定ID的房间时,方法才会返回新状态
const roomId = action.payload.room.id;
const idx = state.roomsList.findIndex(room => room.id === roomId);
if(idx!==-1) {
const roomsList = Array.from(state.roomsList);
roomsList[idx] = action.payload.room;
return {
...state,
roomsList,
};
}else{
return state;
}
答案 0 :(得分:1)
如果reducer没有进行任何更改,总是可以返回以前的状态。
这是default
情况在化简函数中通常使用的switch
中通常所做的事情,例如the example from the official redux
docs。