В диспетчере была обнаружена мутация состояния: даже с инструментарием - PullRequest
0 голосов
/ 25 апреля 2020

Это действие вызывает следующее сообщение об ошибке:

    setTimerState(state, { payload }: PayloadAction<{ timer: StepTimer, timerState: CookingTimerState }>) {
      const { timer, timerState } = payload
      const timerInStore = state.stepTimers
        .find(t => t.timerId === timer.timerId)!
      timerInStore.state = timerState
    }

Ошибка: сбой инварианта: в диспетчере обнаружена мутация состояния по пути: cookingSession.stepTimers.0.state. Посмотрите на редуктор (ы), обрабатывающий действие {"type": "session / setTimerState", "payload": {"timer": {"label": "Dance", "durationSe c": 600, "stepIndex": 0, "timerId": 0, "state": 2}, "timerState": 2}}

Я думал, что инструментарий Redux позволил вам изменить состояние такого рода. Это потому, что мои StepTimer s являются объектами класса, а не POJO?

1 Ответ

0 голосов
/ 26 апреля 2020

Правильно. Только примитивные значения, объекты и массивы считаются сериализуемыми, а экземпляры классов - нет.

Согласно Руководству по стилю Redux, вам не следует помещать экземпляры классов в ваше состояние .

...