我正在尝试使用 redux 调度更新对象数组中的单个对象,我已经尝试了类似问题的答案,但我似乎无法让它工作。我想做的是,当操作进来时,它应该在数组中查找与action.options.date
日期相同的项目,然后它应该用新项目替换数组中的该项目actions.options.data[0]
这是整个项目对象。
const initialState = {
isFetching: false,
monthArray: [],
searchOptions: {
currentMonth: moment().format('YYYY-MM'),
leeway: 1
},
availabilityOptions: {
Early: -1,
Late: -1,
Day: -1,
Twilight: -1,
Night: -1
}
};
case UPDATE_DAY_IN_MONTH_ARRAY:
return Object.assign({}, state, {
monthArray: state.monthArray.map(item => {
if (formatDate(item.date) === formatDate(action.options.date)) {
return action.options.data[0];
}
return item;
})
});
操作代码:(数据的原因:data[0] 是因为返回了来自 mysql 的对象数组)
export const updateDayInMonthArray = (date, data) => {
return {
type: UPDATE_DAY_IN_MONTH_ARRAY,
options: {
date,
data: data[0]
}
}
}
调度操作
const updateDayInMonthArrayHandler = (date, data) => {
dispatch(updateDayInMonthArray(date, data));
}
想通了,谢谢你们的帮助。不是 React 或 Redux 的问题,实际上是节点服务器在检查更新内容之前返回数据的问题。