redux ストア データにアクセスし、react コンポーネントの外側の関数をディスパッチする必要があります (utils 関数内)。
React Native、Redux、Redux Saga、Redux Persist を使用しています。私の設定ストアファイルは以下のようなものです:
//create the saga middleware
const sagaMiddleware = createSagaMiddleware();
const encryptor = createEncryptor({
secretKey: 'encryptor_key',
onError(error) {
console.log('Encryptor error', error);
// Handle the error.
},
});
const persistConfig = {
key: 'root',
storage,
transforms: [encryptor],
whitelist: ['user', 'etc'],
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
export default () => {
const store = createStore(persistedReducer, applyMiddleware(sagaMiddleware));
const persistor = persistStore(store);
sagaMiddleware.run(rootSaga);
return { store, persistor };
};
ユーザーのログイン後、ユーザー情報と oath2 トークンを redux のユーザー レデューサーに保存し、それを Redux Persist で保持します。App.js は以下のコードのようなものです:
import configureStore from './services/configureStore';
const { store, persistor } = configureStore();
render() {
return (
<Provider store={store}>
<PersistGate loading={<Loading style={{ flex: 1 }} />} persistor={persistor}>
<AppNavigator />
</PersistGate>
</Provider>
);
}
ここで、api.js でユーザー トークンにアクセスする必要があります。各axiosリクエストの前に、oauth2トークンの有効期限を確認する必要があります。axiosがリクエストを送信する前に、setHeader関数を呼び出します。api.js の私のコードは以下のようなものです:
import configureStore from './configureStore'; //import config store
function setHeader(){
const { store, persistor } = configureStore();
console.log('store is:', store.getState())
}
setHeader関数console.logを呼び出すと、reduxストアデータを表示する代わりにストアが空になります。誰でも助けることができますか?