Задержка рендеринга до завершения регидратации / Как установить initialRouteName в значение, сохраненное в Redux persist store? - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь разработать приложение React Native и использую Redux persist для сохранения пользовательских настроек (выбранного языка и выбранной начальной страницы). Для навигации я использую навигацию по ящикам.

Сохранение пользовательских настроек в постоянном хранилище работает таким образом, что после перезагрузки приложения и открытия страницы настроек выбранный язык и начальная страница сохраняются последними. Однако я не могу показать выбранную пользователем начальную страницу в качестве первой. Кажется, что вместо сохраненного значения всегда используется начальное значение «Настройки» редуктора (например, «Редактировать»). Значение для открытие страницы читается до завершения регидратации?

Я пробовал несколько вещей, но ничего не работает. Как я могу заставить приложение отображать выбранную пользователем начальную страницу в качестве первой страницы?

// the container with initialRouteName

let initialPage = store.getState().settings.openingPage

const AppMainDrawerNavigator = createDrawerNavigator({
    Settings: Settings,
    Edit: Edit,
    Read: Read,
    Search: Search,
    Share: Share,
},
{
    initialRouteName: initialPage,
    drawerBackgroundColor: '#785454',
    drawerType: 'slide',
    drawerWidth: Dimensions.get('window').width * 0.8,
    contentComponent: HamburgerMenu,
})

const AppNavigatorContainer = createAppContainer(AppMainDrawerNavigator)


// App component 

const App = () => {
    return (
        <Provider store={store}>
            <PersistGate loading={null} persistor={persistor}>
                <AppNavigatorContainer/>
            </PersistGate>
        </Provider>
    )
}
export default App

...