React Redux: Как добавить свойство к пустому объекту в редукторе - PullRequest
0 голосов
/ 24 января 2020
const INITIAL_STATE = {
  editedProduct: {},
};

reducer. js

   case ADD_SWATCH:
      const typeSwatch = action.payload;
      return merge(state, {
        editedProduct: {
          ...state.editedProduct,
          [typeSwatch]: [
            ...state.editedProduct[typeSwatch],
            {
              dimSwtNo: state.editedProduct[typeSwatch].length
                ? state.editedProduct[typeSwatch].length + 1
                : 1,
            },
          ],
        },
      });

Я получаю сообщение об ошибке: возможный необработанный отказ от обещания (id: 0): TypeError: недопустимая попытка распространить не повторяемый экземпляр

Проблема в этой строке

...state.editedProduct[typeSwatch],

Относится к свойству, которое еще не было инициализировано.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 24 января 2020

Как показывает ошибка, вы не можете распространять значение null / undefined. Простейшим подходом здесь является использование значения по умолчанию в сценарии ios, где свойство еще не установлено, например,

...(state.editedProduct[typeSwatch] || [])

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

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