PersistGate в реаги-редуксе не ждет, пока магазин не будет повторно обработан.
У меня есть два навигатора: AppNavigator
и BottomBarNavigator
, первый - для потока аутентификации, второй - когда пользователь проходит аутентификацию.
Эти навигаторы находятся внутри createSwitchNavigator
, и я хочу, чтобы был выбран правильный навигатор на основе переменной loggedIn
, которую я храню в своем хранилище / аутентификации.
Router.js
const MyNavigator = (!loggedIn) ? createSwitchNavigator({
AppNavigator: AppNavigator,
BottomBarNavigator: BottomBarNavigator,
}) : createSwitchNavigator({
BottomBarNavigator: BottomBarNavigator,
AppNavigator: AppNavigator,
});
Я сохраняю свою переменную store/auth
внутри redux-persist.
Store.js
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
const persistConfig = {
key: 'root',
storage: storage,
whitelist: ['auth']
};
const pReducer = persistReducer(persistConfig, reducers);
export const store = createStore(pReducer, undefined, applyMiddleware(ReduxThunk, logger));
export const persistor = persistStore(store);
В моем App.js мой навигатор оборачивается PersistGate
, но хотя состояние восстанавливается через несколько миллисекунд, навигатор отображается раньше, и поэтому всегда выбирается AppNavigator
.
App.js
import { PersistGate } from 'redux-persist/es/integration/react'
render(){
return (
<Provider store={store}>
<PersistGate
loading={null}
onBeforeLift={this.onBeforeLift}
persistor={persistor}>
<MyNavigator ref={navigatorRef => {NavigationService.setTopLevelNavigator(navigatorRef);}}/>
</PersistGate>
</Provider>
Есть какие-нибудь предложения, чтобы он работал правильно?