списки добавления массива реаги-редукса - PullRequest
0 голосов
/ 03 февраля 2020

Это часть моего избыточного кода для «добавления списков».

Я хочу заполнить list_01, list_02, list_03, list_04, list_06 при поступлении запроса.

Но, похоже, у lockerReducer есть проблема в заполнении этих списков.

Я хочу получить прямой доступ к list_01, list_02, list_03, list_04, list_06, чтобы поместить в них списки массивов.

Кто-нибудь знает ответ?

import _ from 'lodash'

export const lockerState = {
  locker: {
    list_01: [],
    list_02: [],
    list_03: [],
    list_04: [],
    list_06: []
  }
}

export const lockerAction = {
  INIT_LIST: 'INIT_LIST',

}

// REDUCERS
export const lockerReducer = (state = lockerState, action) => {
  switch (action.type) {
    case lockerAction.INIT_LIST:

      switch (action.payload.menu) {
        case '01':
          console.log(action.payload.menu, action.payload.list, action.payload.menu)
          return {
            ...state,
            list_01: [state.locker.list_01, action.payload.list]
          }
        case '02':
          return {
            ...state,
            list_02: [state.locker.list_02, action.payload.list]
          }
        case '03':
          return {
            ...state,
            list_03: [state.locker.list_03, action.payload.list]
          }
        case '04':
          return {
            ...state,
            list_04: [state.locker.list_04, action.payload.list]
          }
        case '06':
          return {
            ...state,
            list_06: [state.locker.list_06, action.payload.list]
          }
        default:
          return {
            ...state,
            list_01: [...state.locker.list_01, action.payload.list]
          }
      }

    default:
      return state
  }
}

// ACTION CREATOR
export const initList = (category, list, menu) => {
  //console.log('initList action creator-> ', category, list, menu)
  return {
    type: lockerAction.INIT_LIST,
    payload: {
      category, list, menu
    }
  }
}

Там нет сообщения об ошибке, но результат не тот, который я ожидал

Redux Dev tool - Результат Img

1 Ответ

0 голосов
/ 03 февраля 2020

Если вы пытаетесь создать новый список из существующего списка + новый массив элементов, вам придется использовать оператор распространения. То, что вы делаете сейчас, создает вложенный список внутри списка. Если вы пытаетесь создать одноуровневый список, воспользуйтесь приведенным ниже кодом.

return {
    ...state,
    list_02:[...state.locker.list_02, ...action.payload.list]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...