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