2

反応ネイティブの Android アプリケーションで状態を永続化するために 1 週​​間以上試しましたが、状態を復元した後は常に初期値になります。Redux devtools で ASyncStorage の内容または状態を確認すると、初期状態です。

{
   "status":"{\"actions\":[]}",
   "list":"{\"actions\":[]}",
   "map":"{\"site_ids\":{},\"alarmCounts\":[],\"geoJSON\":{}}",
   "_persist":"{\"version\":-1,\"rehydrated\":true}"
}

redux-reset を使用するとエラーが発生Unexpected key "_persist" ...し、Google からの解決策が見つかりませんでした。

store.flush()またはを実行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 を使用します

4

5 に答える 5