Как заменить объект в состоянии в редукторе - PullRequest
0 голосов
/ 02 июля 2018
const initialState = []

case UPDATE_USER: {
  console.log(action, "this is action");
  return [
    ...state,
    state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
  ];
}

поэтому у меня есть это начальное состояние. а потом это одно из моих заявлений для редуктора

Я пытаюсь заменить объект (пользователя) новым объектом пользователя. поэтому я пытаюсь отобразить массив, а затем заменить его старым и новым именем. старые и новые имена появляются правильно. однако в настоящее время это изменение массива из 10 объектов в массив из 10 объектов плюс последний элемент массива, являющийся массивом из 10 объектов. очень запутанно, но по сути

массив увеличивается от длины 10 до длины 11

даже если оно должно остаться прежним

и последний элемент массива (который сам является массивом) - это массив, который я хочу в новом состоянии

если это имеет смысл?

в основном это близко, но не совсем там

1 Ответ

0 голосов
/ 02 июля 2018

Вместо использования spread syntax все, что вам нужно сделать, - это return the mapped value, поскольку вы выполняете итерацию по своему состоянию редуктора и по отдельности клонируете внутренние объекты на карте.

case UPDATE_USER: {
  console.log(action, "this is action");
  return state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
}
...