我正在使用Redux构建ReactNative应用程序,遇到了一个让我头疼的问题。尝试将状态重置为初始状态时收到以下错误:Error: Invariant failed: A state mutation was detected between dispatches, in the path 'recievedData.data.stem.ControlMeasurementDefinition'. This may cause incorrect behaviour. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)]
我在一个进程中通过向数组添加元素来设置redux状态,当我试图将其重置为初始状态[]时,它给了我上面提到的错误。我正在使用ReactNative与Expo,当直接通过ExpoGo测试应用程序时,该错误不会阻止应用程序正常工作。然而,当我安装一个APK文件并运行它时,应用程序会卡在一个闪屏上。
先谢谢你的帮助。
编辑:
这里是代码快照...
const initialState = {
data: {}
};
// reducer
const recievedDataReducer = (state = initialState, action) => {
switch(action.type) {
case SET_RECIEVED_DATA:
return {
...state,
data: action.payload,
};
case RESET_RECIEVED_DATA:
return initialState;
default:
return {
...state
};
}
}
// actions
export const setRecievedData = (data) => ({
type: SET_RECIEVED_DATA,
payload: data
});
export const resetRecievedData = () => ({
type: RESET_RECIEVED_DATA,
payload: []
})
使用setRecievedData
更新状态,每次状态更改时都会调用此操作。我唯一使用resetRecievedData
的时候是我想重置状态的时候。这就是我收到错误的地方。
1条答案
按热度按时间vsdwdz231#
1.你发送了一个你不处理的payload(你可以在这里删除payload)
1.在数据初始状态是一个对象,而不是一个数组: