Immer - 一个 immer producer 返回了一个新的值*并*修改了 react native
Immer - An immer producer returned a new value *and* modified react native
toggleAllClassList: (state, action) => {
let allClassListLocal = state.classList || [];
var isAllSelected = false;
allClassListLocal.forEach(function (item: any) {
item.LstParentInfo.forEach((subItem: any) => {
subItem.IsSelected = !subItem.IsSelected;
isAllSelected = subItem.IsSelected;
});
});
return {
...state,
classList: [...allClassListLocal],
isClassListSelected: isAllSelected,
isAllSelected: isAllSelected,
};
}
我收到这个错误
[Immer] 一个 immer producer 返回了一个新值 and modified react native
我正在使用 redux 工具包并收到此错误。关于为什么会这样的任何指示?
您正在修改 forEach
中的状态,并且您还返回了一个新状态。您可以同时执行这两项操作,但不能同时执行这两项操作。
解决方案看起来像
toggleAllClassList: (state, action) => {
var isAllSelected = false;
if (state.classList) {
state.classList.forEach(function (item: any) {
item.LstParentInfo.forEach((subItem: any) => {
subItem.IsSelected = !subItem.IsSelected;
isAllSelected = subItem.IsSelected;
});
});
}
state.isClassListSelected = isAllSelected
state.isAllSelected = isAllSelected
}
一般来说,给https://redux-toolkit.js.org/usage/immer-reducers一个好的阅读。
toggleAllClassList: (state, action) => {
let allClassListLocal = state.classList || [];
var isAllSelected = false;
allClassListLocal.forEach(function (item: any) {
item.LstParentInfo.forEach((subItem: any) => {
subItem.IsSelected = !subItem.IsSelected;
isAllSelected = subItem.IsSelected;
});
});
return {
...state,
classList: [...allClassListLocal],
isClassListSelected: isAllSelected,
isAllSelected: isAllSelected,
};
}
我收到这个错误
[Immer] 一个 immer producer 返回了一个新值 and modified react native
我正在使用 redux 工具包并收到此错误。关于为什么会这样的任何指示?
您正在修改 forEach
中的状态,并且您还返回了一个新状态。您可以同时执行这两项操作,但不能同时执行这两项操作。
解决方案看起来像
toggleAllClassList: (state, action) => {
var isAllSelected = false;
if (state.classList) {
state.classList.forEach(function (item: any) {
item.LstParentInfo.forEach((subItem: any) => {
subItem.IsSelected = !subItem.IsSelected;
isAllSelected = subItem.IsSelected;
});
});
}
state.isClassListSelected = isAllSelected
state.isAllSelected = isAllSelected
}
一般来说,给https://redux-toolkit.js.org/usage/immer-reducers一个好的阅读。