Изменить свойство ключа объекта в редукторе - PullRequest
1 голос
/ 15 апреля 2019

У меня есть два значения с сервера - старое значение и новое значение. Внутри моего редукционного магазина мне нужно изменить ключ объекта со старого значения на новое значение (изменить значение ключа) и прикрепить массив элементов из старого ключа объекта к замененному новому ключу объекта. Каков наилучший подход к этому?

Я пытался сделать что-то вроде этого:

const handleEditFilter = (state, { payload }) => {
  const { newValue, oldValue } = payload;
  return {
    ...state,
    regions: {
      ...state.regions,
      list: {
        ...state.regions.list,
        [newValue]: [...state.regions.list[oldValue]],
      },
    },
  };
};

Но это просто создание нового объекта с элементами массива из старого массива. Как на самом деле заменить имя ключа объекта и прикрепить элементы из старого ключа?

1 Ответ

1 голос
/ 15 апреля 2019

Прежде всего, скопируйте внутренний список:

const list = { ...state.regions.list };

, затем замените значение:

list[newValue] = list[oldValue];
delete list[oldValue];

Затем обновите состояние:

return {
  ...state,
  regions: {
     ...state.regions,
     list
  }
};

Выполнитьнеизменяемые операции над вложенными объектами. Я предпочитаю использовать библиотеку, например, icepick , что сделает операцию более читабельной (цепочка getIn, unsetIn и setIn).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...