React native:undefined不是对象(评估'this.props.navigation.navigate')

时间:2019-09-16 12:53:45

标签: react-native

首先,我发现了许多问题相同的问题,但似乎没有一个对我有帮助。该代码确实到达了this.props.navigation.navigate('LoginScreen'),但是引发了标题中看到的错误。文档指出,您只能使用this.props,但似乎未定义。我还尝试仅使用props.navigation甚至破坏checkedIfLogginIn内部的导航作为类似checkIfLoggedIn = ({ navigation }) => {}的参数。也许这是我所忽略的小事情,但问题是我现在已经安静了一会儿,我需要修复它。

import React, { Component } from 'react';
import { StyleSheet, Text, View, Alert } from 'react-native';
import{ createAppContainer, createSwitchNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import LoginScreen from './Components/LoginScreen';
import firebase from './firebase';

class App extends Component{

 checkedIfLoggedIn = () => {
  firebase.auth().onAuthStateChanged(user => {
   if (user) {
     this.props.navigation.navigate(AppStackNavigator);
   } else {
     this.props.navigation.navigate('LoginScreen');
   }
  })
 }

 componentDidMount(){
   this.checkedIfLoggedIn();
 }

 render() {
   return < AppContainer />;
 }
}

export default App

1 个答案:

答案 0 :(得分:1)

 this.props.navigation.navigate

仅当您位于以下任一位置时,此选项才可使用:

import{ createAppContainer, createSwitchNavigator } from 'react-navigation', so p
import { createStackNavigator } from 'react-navigation-stack';

如果要使用它,则需要在里面,例如: 您可以使用onClick函数作为标记的支持:

<AppNav onClick={nav to ... or call a function to do something}/>