Reducer 更新数组的状态
Reducer updating state for an array
我目前正在更新多个项目数量并返回一组更新数据。我需要用我的减速器中的更新值更新当前状态。下面 UPDATE_QUANTITY 中的示例只是 returns 一个对象并更新当前状态。如果我有一个数组而不是一个对象来更新状态,我将如何改变它。
代码:
const initialState = {
listitem: []
}
export default function(state = initialState, action) {
switch (action.type) {
case FETCH_ALLITEMS:
return { ...state, listitem: action.payload.data.itemsList }
case UPDATE_QUANTITY:
return { ...state,
listitem: state.listitem.map(
(content, i) => content.itemId === action.payload.data.itemId ? {...content, quantity_printed : action.payload.data.quantity_printed } : content) };
default:
return state;
}
}
根据聊天中的讨论,您可以迭代传入数组并基于该数组更新现有数组。
export default function(state = initialState, action) {
switch (action.type) {
case 'FETCH_ALLITEMS':
return { ...state, listitem: action.payload.data.itemsList };
case 'UPDATE_QUANTITY': {
const updatedArray = [...state.listItem];
action.payload.data.forEach((element) => {
const item = updatedArray.find((x) => x.itemId === element.itemId);
item.quantity_printed = element.quantity_printed;
});
return {
...state,
listitem: updatedArray,
};
}
default:
return state;
}
}
我目前正在更新多个项目数量并返回一组更新数据。我需要用我的减速器中的更新值更新当前状态。下面 UPDATE_QUANTITY 中的示例只是 returns 一个对象并更新当前状态。如果我有一个数组而不是一个对象来更新状态,我将如何改变它。
代码:
const initialState = {
listitem: []
}
export default function(state = initialState, action) {
switch (action.type) {
case FETCH_ALLITEMS:
return { ...state, listitem: action.payload.data.itemsList }
case UPDATE_QUANTITY:
return { ...state,
listitem: state.listitem.map(
(content, i) => content.itemId === action.payload.data.itemId ? {...content, quantity_printed : action.payload.data.quantity_printed } : content) };
default:
return state;
}
}
根据聊天中的讨论,您可以迭代传入数组并基于该数组更新现有数组。
export default function(state = initialState, action) {
switch (action.type) {
case 'FETCH_ALLITEMS':
return { ...state, listitem: action.payload.data.itemsList };
case 'UPDATE_QUANTITY': {
const updatedArray = [...state.listItem];
action.payload.data.forEach((element) => {
const item = updatedArray.find((x) => x.itemId === element.itemId);
item.quantity_printed = element.quantity_printed;
});
return {
...state,
listitem: updatedArray,
};
}
default:
return state;
}
}