PersistGate в redux-persist не ожидает повторного увлажнения магазина - PullRequest
0 голосов
/ 12 марта 2019

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>

Есть какие-нибудь предложения, чтобы он работал правильно?

...