如何通过 id 从 Redux 中的对象列表中更新一个对象?
How to update just one object from a list of objects in Redux by id?
我在 React 中使用 Redux 构建了一个应用程序,在我的状态下,我有一个对象列表,我想通过唯一 ID 更新该列表中的一个对象。
我的对象看起来像:
{
id: '',
title: '',
description: '',
label: '',
}
我的状态:
const initialState = {
compare: dayjs().month(),
savedEvents: [],
}
当我在该列表中推送新事件时,我使用:
case 'events/setNewEvent':
return { ...state, savedEvents: [...state.savedEvents, action.payload] };
我的问题是我不知道如何编写正确的代码来通过从我的表单发送的 id 更新一个对象。
您可以组合使用数组方法 map
和 spread 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)
};
我在 React 中使用 Redux 构建了一个应用程序,在我的状态下,我有一个对象列表,我想通过唯一 ID 更新该列表中的一个对象。
我的对象看起来像:
{
id: '',
title: '',
description: '',
label: '',
}
我的状态:
const initialState = {
compare: dayjs().month(),
savedEvents: [],
}
当我在该列表中推送新事件时,我使用:
case 'events/setNewEvent':
return { ...state, savedEvents: [...state.savedEvents, action.payload] };
我的问题是我不知道如何编写正确的代码来通过从我的表单发送的 id 更新一个对象。
您可以组合使用数组方法 map
和 spread 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)
};