React native 更新不可变对象数组,redux

React native 更新不可变对象数组,redux,react-native,redux,React Native,Redux,我收到错误“不变冲突:尝试获取超出范围索引NaN的帧”,原因是分配不正确/或从缩减器发送空数组。 我正在尝试更新3个字段,state.items[index]。status,state.items[index]。statusUpdatedOn和state.items[index]。statusUpdatedBy 由于它是嵌套的,我正在尝试在我的reducer中进行如下更新。 代码似乎有问题,我无法找到: case ActionTypes.UPDATE_ITEM_STATUS: var ind

我收到错误“不变冲突:尝试获取超出范围索引NaN的帧”,原因是分配不正确/或从缩减器发送空数组。 我正在尝试更新3个字段,state.items[index]。status,state.items[index]。statusUpdatedOn和state.items[index]。statusUpdatedBy

由于它是嵌套的,我正在尝试在我的reducer中进行如下更新。 代码似乎有问题,我无法找到:

case ActionTypes.UPDATE_ITEM_STATUS:
  var index = state.items.findIndex((item) => item.id === action.payload.id)
  return { ...state,
    items: {
      ...state.items,
      [index]:{
        ...state.items[index],
        status: action.payload.newStatus,
        statusUpdatedOn: action.payload.statusUpdatedOn,
        statusUpdatedBy: action.payload.statusUpdatedBy
      }
    },
    isLoading: false,
    errMess: null
  }
  break;
当我的状态对象包含元素时:

  items: [],
  errMess: '',
  isLoading: false,

请帮助我更正代码

是否为状态。项目是来自immutablejs的不可变列表?如果是这种情况,并且没有合适的中间件,则需要使用toJS/fromJS与本机javascript数组API进行交互。@remix23,state.items不是来自immutablejs。好吧,Redux中的状态对象是不可变的。我提到了如何在redux中更新嵌套数组objectState,既不保证也不要求它是不可变的。从react的角度来看,这是一个很好的实践,但是您必须自己强制实现不可变性,可以使用手动解构,也可以使用像immutablejs这样的库。