我已经尝试了一周或更长时间,以使我的状态在反应原生的 Android 应用程序中持续存在,但在重新水化后,状态始终具有初始值。如果我使用 Redux devtools 检查 ASyncStorage 内容或状态,它是初始状态:
{
"status":"{\"actions\":[]}",
"list":"{\"actions\":[]}",
"map":"{\"site_ids\":{},\"alarmCounts\":[],\"geoJSON\":{}}",
"_persist":"{\"version\":-1,\"rehydrated\":true}"
}
Unexpected key "_persist" ...
当我使用 redux-reset 并且无法从 Google 找到任何解决方案时,我也会收到错误消息。
如果我运行store.flush()
or store.purge()
,我在 ASyncStorage 中看不到任何变化。
我的 configureStore 文件如下。我认为问题出在此处。有什么帮助吗?
import { createStore } from "redux";
import { composeWithDevTools } from 'redux-devtools-extension';
import { persistStore, persistCombineReducers } from "redux-persist";
import reduxReset from 'redux-reset';
import { AsyncStorage } from 'react-native'
import userReducer from '../reducers/user';
import statusReducer from '../reducers/status';
import listReducer from '../reducers/list';
import mapReducer from '../reducers/map';
function reset(): void {
console.log('Reseting state');
store.dispatch({
type: 'RESET'
});
// persistor.purge();
};
function flush() {
console.log('FLUSH');
persistor.flush();
}
const enhancer = composeWithDevTools(
reduxReset()
);
const appReducer = persistCombineReducers(
{ // cfg
key: 'primary',
storage: AsyncStorage,
blacklist: ['user'],
throttle: 1000
},
{
user: userReducer,
status: statusReducer,
list: listReducer,
map: mapReducer
}
);
const rootReducer = (state, action) => {
return appReducer(state, action);
}
const store = createStore(
rootReducer,
enhancer
);
const persistor = persistStore(store, null);
export default { store, persistor, reset, flush };
我使用 redux@3.7.2、redux-persist@5.9.1、react-native@0.54.0