1

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ストアデータを表示する代わりにストアが空になります。誰でも助けることができますか?

4

2 に答える 2