2 回答

TA贡献1831条经验 获得超9个赞
我先删除了这些地方。然后我根据位置数组是否为空来过滤事件。之后,我返回了状态。
case "deleteItems":
const eventsPostDeletingPlaces = state.events.map(event => {
const place = event.place.find(x => x.id === action.id);
if (place) {
return {
...event,
place: event.place.filter(x => x.id !== action.id)
};
}
return event;
});
const eventsWithPlaces = eventsPostDeletingPlaces.filter((each) => each.place.length);
return {
...state,
events: eventsWithPlaces
}
在此处检查已编辑的沙箱

TA贡献1831条经验 获得超4个赞
基本上与第一个答案中的逻辑相同,但用a和 extrareduce代替。只是一种选择。mapfilter
case "deleteItems":
return {
...state,
events: state.events.reduce((events, event) => {
const place = event.place.find(x => x.id === action.id);
if (place) {
event.place = event.place.filter(x => x.id !== action.id);
}
if (event.place.length > 0) {
events.push(event);
}
return events;
}, [])
};
添加回答
举报