如何通过id从Redux中的对象列表中只更新一个对象



我用Redux在React中构建了一个应用程序,在我的状态下,我有一个对象列表,我想通过唯一id更新该列表中的一个对象。

我的对象看起来像:

{
id: '',
title: '',
description: '',
label: '',
}

我的状态:

const initialState = {
compare: dayjs().month(),
savedEvents: [],
}

当我在该列表中推送一个新事件时,我使用:

case 'events/setNewEvent':
return { ...state, savedEvents: [...state.savedEvents, action.payload] };

我的问题是,我不知道如何编写正确的代码来更新从我的表单发送的id中的一个对象

您可以使用Array方法mapspread operator的组合

function updateOne(array, obj) {
return array.map((item) => {
if (obj.id === item.id) {
// update whatever you want
return {...item, title: obj.title };
} else {
return item;
}
})
}

减速器:

case 'events/setNewEvent':
return { 
...state, 
savedEvents: updateOne(state.savedEvents, action.payload) 
};

最新更新