如果找到ID,则更改数组中的对象

时间:2019-03-26 18:40:26

标签: reactjs redux react-redux

根据Redux设计模式,如果要更改数组中的对象,则必须使用state.items.map,但是可以使用array.findIndex,并且如果找不到的项返回旧状态?这是不好的做法吗?如果是,为什么呢?

  1. 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, };

  2. 第二种方式,我更喜欢。仅当找到具有给定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; }

1 个答案:

答案 0 :(得分:1)

如果reducer没有进行任何更改,总是可以返回以前的状态。

这是default情况在化简函数中通常使用的switch中通常所做的事情,例如the example from the official redux docs