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;
  }
}