Immer React Native Redux 嵌套对象

Immer React Native Redux Nested Object

当我 运行 以下行时,即使在其中传递了山脉和电梯,它也没有做任何事情:

draftState.resortNotifications[`${action.mountain}`][`${action.lift}`] = true;

如果我 运行 这是我在我的 redux 商店中看到的:

draftState.resortNotifications[`${action.mountain}`] = true;

出于嵌套对象的唯一原因,我正在尝试使用 immer。我觉得这是一个基本的初级 JS 错误。我也试过 .push({[action.mountain]: true}),但没有任何作用。这个对象还不可用/我是第一次同时添加到山和升降机。我已使用警报来确保正确传递这两个操作。

import * as types from "./actionTypes";
import produce from 'immer';

const initialState = {
  resortNotifications: {}
};

const mountainInfo =
  produce(
    (draftState, action) => {
      switch (action.type) {
        case types.RESORT_NOTIFICATIONS_LIFT_SUCCESS:
          draftState.resortNotifications[`${action.mountain}`][`${action.lift}`] = true;
          break;
      }
    },
    initialState
  )

export default mountainInfo;

我会说你尝试访问尚未声明的内容试试这个:

import * as types from "./actionTypes";
import produce from 'immer';

const initialState = {
  resortNotifications: {}
};

const mountainInfo =
  produce(
    (draftState, action) => {
      switch (action.type) {
        case types.RESORT_NOTIFICATIONS_LIFT_SUCCESS:
          if (!draftState.resortNotifications[action.mountain]) {
            draftState.resortNotifications[action.mountain] = {};
          }
          draftState.resortNotifications[action.mountain][action.lift] = true;
          break;
      }
    },
    initialState
  )

export default mountainInfo;