我有一个包含对象的数组,并且已编辑其中一个对象,并希望将其替换为reducer中新更新的对象。 它没有更新,任何想法? 我的inititalState看起来像这样,我根据id更新了对象...我的有效负载有新更新的对象。
const initialState = newTimesheetDetail:[dayNo:0, details:[{id:2, name:'Bob', age:55}]]

case EDIT_DETAILS + '_FULFILLED':
const detailToEdit = state.newTimesheetDetail.filter(item => {
let date1 = new Date(action.payload[0].workDate).withoutTime().toString();
let date2 = new Date(item.date).withoutTime().toString();
if (date1 === date2) {
item.details.map(e => {
return e.id === action.payload[0].id ? {...e, ...action.payload[0]} : e
})
}
return item
})
console.log('detailToEdit', detailToEdit)
return Object.assign({}, state, { newTimesheetDetail: detailToEdit })

答案 0 :(得分:0)
map
函数不会更改原始数组,而是返回一个新数组。在这里,您需要返回一个包含更新详细信息的新item
对象。
if (date1 === date2) {
const newDetails = item.details.map(e => {
return e.id === action.payload[0].id ? {...e, ...action.payload[0]} : e
})
return { ...item, details: newDetails }
}