В соответствии с шаблонами проектирования 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,
};
Второй способ, который мне нравится больше. Метод возвращает новое состояние, только если найдена комната с заданным идентификатором
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;
}