Объект, который должен быть неизменным и был заморожен в редукторном редукторе в приложении с естественной реакцией - PullRequest
0 голосов
/ 08 мая 2018

Это первый раз, когда я вижу, как это происходит, я уже некоторое время запускаю приложение и не менял редуктор, поэтому не уверен, что не так. Я создаю новый объект состояния, используя распространение op. и затем присвоение значения, но с указанием ошибки в списке.

CallStack:

  • Вы попытались установить ключ 'lastSeen' со значением ... для объекта, который должен быть неизменным и заморожен
  • Стек ошибок - throwOnImmutableMutation (deepFreezeAndThrowOnMutationInDev.js: 64: 8)
  • Номер строки моего файла показан ниже

Номер строки, на которую он указывает, является присвоением lastSeen.

const initial = {
  ...
};

const BleCommunicator = (state = initial, action) => {
  let nextState = null;
  switch (action.type) {
  ...
  case c.DEVICE_DISCONNECTED:
    nextState = {
      ...state
    };
    nextState[action.device.id].lastSeen = moment(); //<-- this is where it is erroring
    delete nextState[action.device.id].rssi;
    nextState.connectedDevices = _.remove(nextState.connectedDevices, action.device.id);
    break;
...
return nextState;
}

РЕДАКТИРОВАТЬ: причина, по-видимому, в том, что я запускаю эпопею rx, которая обновляет значения. Они берут нормальный путь через действия / редуктор, но во время второго запуска эпопеи (по таймеру) не удается обновить значение. Есть ли что-то, что могло бы происходить под капотом, что могло бы заставить меня обновлять старое состояние?

EDIT2: это происходит только на Android. Вот ссылка на объект, который является состоянием для обновляемого элемента. https://gist.github.com/anwarhamr/4c3ebc8e2a3d5166c025fd1cf69a7e1c

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