Добавить объект в существующий массив в состоянии - PullRequest
0 голосов
/ 20 мая 2019

У меня есть приложение, которое позволяет создавать новые таблицы. Допустим, у меня есть следующее состояние:

const initialState = {
  table: [{
    id: 1,
    item: {}
  }]
}

Теперь я хочу добавить новые объекты к элементу:

Редуктор:

case types.ADD_ITEM:
    return {
      ...state,
      table: [...state.table, { item: action.item}],
      loading: false
    }

Поэтому после того, как пользователь добавляет новые элементы в таблицу, состояние должно выглядеть примерно так:

table: [
// table with id 1
      {
        id: 1,
        item: {
          id: '1',
          data: 'etc'
        }
        item: {
          id: '2',
          data: 'blabla'
        }
      },
  // table with id 2
      {
       id: 2,
       item: {
        id: '1'
        data: 'etc'
       }
      },
 // etc
    ]

Я думаю, что мой редуктор неправильно настроен .. таблицы добавленыправильно, но пунктов нет.

Текущий формат:

table: [
      {
        id: 1,
        item: []
      },
      {
        item: {
          id: '1'

        }
      }
    ]

1 Ответ

1 голос
/ 20 мая 2019

Я думаю, вы пытаетесь добавить содержимое action.item в ваш массив. В данный момент вы добавляете содержимое как новый элемент. Вы можете использовать следующее для достижения желаемого результата:

case types.ADD_ITEM:
    return {
      ...state,
      table: [...state.table, { ...action.item }],
      loading: false
    }

Или, если вы хотите получить только поле id элемента, и сохранить item внутри поля item:

case types.ADD_ITEM:
    return {
      ...state,
      table: [...state.table, { id: action.item.id, item: action.item }],
      loading: false
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...