Заставка с PersistGate - PullRequest
       45

Заставка с PersistGate

0 голосов
/ 26 апреля 2019

у меня ниже кодовая база

Navigator.js экспорт по умолчанию createAppContainer (createSwitchNavigator ( { // screendesign: screendesign, SplashScreen: SplashScreen, Приложение: drNav, AuthStack: AuthStack }, { initialRouteName: 'SplashScreen', } ));

import SplashScreen from './screens/SplashScreen'
<Provider store={store}>
<PersistGate loading={<SplashScreen/>} persistor={persistor}>
<View style={styles.container}>
<Navigator />
</View>
</PersistGate>
</Provider>

splashScreen.js

componentDidMount() {
    if (this.state.isAuthenticated) {
      this.props.navigation.navigate("App");
    }
    else {
      this.props.navigation.navigate("AuthStack");
    }
  }

Я получаю ошибку ниже

enter image description here

Перед внедрением приставки я использовал эту страницу в качестве экрана ввода для мое приложение, отображаемое в качестве заставки и позади проверки, если пользователь аутентифицировано или нет, если аутентифицировано перенаправление на страницу входа остальная панель приборов. Работало нормально, но теперь я использовал редукс, потом сценарий работает аналогично, только diff этот экран не виден так как избыточная загрузка данных из хранилища

Помогите, пожалуйста, я новичок в реакции на родной язык, но не могу понять эту ошибку

Спасибо

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Навигационная опора доступна для всех компонентов, определенных внутри навигатора. Компонент SplashScreen не является частью вашего навигатора, поэтому он не имеет доступа к реквизиту навигации. Но я не думаю, что вам это нужно там.

Ваш компонент SplashScreen является компонентом дампа, который будет отображаться пользователю до тех пор, пока PersistGate потребуется загрузить сохраненные данные в ваше хранилище с избыточностью. Поэтому, когда загрузка данных будет завершена, вы увидите остальные компоненты в том виде, как они определены внутри PersistGate. Поэтому я не понимаю, зачем вам нужно использовать навигацию из этого компонента загрузки.

В случае, если вам действительно необходим доступ к навигационной информации из SplashScreen, вы можете следовать этому руководству: https://reactnavigation.org/docs/en/connecting-navigation-prop.html

0 голосов
/ 26 апреля 2019

Похоже, ваш код не может найти навигация в Компонент SplashScreen .

1) Попробуйте использовать это в методе рендеринга компонента SplashScreen.2) Также проверьте конфигурацию с избыточностью, возможно, проблема связана с вашей конфигурацией с избыточностью из-за того, что ваш компонент не может получить доступ к навигационным реквизитам.

...