ошибка с реакцией навигации при использовании провайдера - PullRequest
0 голосов
/ 05 февраля 2019

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

  render(){
      if (this.state.loggedAndVerifiedOrNot) {
            this.props.navigation.navigate('Menu');        
      }
      else {
            this.props.navigation.navigate('Login');
      }
      return(null)
  }

Чтобы объединить избыточность и провайдера, я заменил возвращаемую (нулевую) часть на:

      return (
         <Provider store={Store}>
           <App/>
         </Provider>
      )

У меня есть Ошибка типа: undefined не являетсяобъект (оценивается как this.props.navigation.navigate) Я не понимаю, откуда возникла проблема, я ничего не изменил в реагирующей навигации.

Полный код:

import React from 'react';
import { View, Text, Button, Image, TouchableOpacity, StyleSheet } from 'react-native';
import { createStackNavigator, StackActions, NavigationActions } from 'react-navigation';
import Listing from './Listing';
import Menu from './Menu';
import Login from './Login';
import TestRedux from './redux/Components/TestRedux';
import firebase from '@firebase/app'
import '@firebase/auth'

firebase.initializeApp({
    XXXXXXXXXXX
});

export class App extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      user:'',
      loggedAndVerifiedOrNot: false
    }

   firebase.auth().onAuthStateChanged((user) => {
      if (user != null) {
            if (user.emailVerified!=null)
            {
              if (user.emailVerified == true)
              this.setState({loggedAndVerifiedOrNot: true})
            }
      }
    });
  }

  render(){
      if (this.state.loggedAndVerifiedOrNot) {
            this.props.navigation.navigate('Menu');        
      }
      else {
            this.props.navigation.navigate('Login');
      }
      //return(null)
      return (
           <Provider store={Store}>
             <App/>
           </Provider>
      )
  }
}

export default createStackNavigator({
    Home: {
      screen: App,
    },
    Login: {
      screen: Login,
    },
    Menu: {
      screen: Menu,
    },
    Listing: {
      screen: Listing,
    },
    TestRedux: {
      screen: TestRedux,
    },
  },
  {
    initialRouteName: 'Home',
  }
);

Знаете ли вы, в чем проблема?

1 Ответ

0 голосов
/ 05 февраля 2019

Первое, что я вижу, вы визуализируете <App /> в своем компоненте приложения.Похоже, проблема здесь

Я бы также не вставил этот код

firebase.auth().onAuthStateChanged((user) => {
  if (user != null) {
        if (user.emailVerified!=null)
        {
          if (user.emailVerified == true)
          this.setState({loggedAndVerifiedOrNot: true})
        }
  }
});

в ваш конструктор, но в ComponentDidMount() вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...