React-Navigation this.props.navigation.navigate未定义不是对象

时间:2018-08-15 09:16:32

标签: react-native

我正在使用反应导航,但是我的代码返回了;这个未定义的不是对象(正在评估'_this2.props.navigation.navigate)

我该如何解决此错误?

myCodes;

    import React, { Component } from 'react';
    import Login from './components/LoginScreen/LoginScreen';
    import AddNewUser from './components/AddNewUserScreen/AddNewUserScreen';
    import { createStackNavigator } from 'react-navigation';

    class App extends Component{
        render(){
            return(
                <Login />
            );
        }


    }

    const RootStack = ({ createStackNavigator }) => (
        {
          Login: Login,
          AddNew: AddNewUser,
        });

    export default App;

LoginScreen.js

 <TouchableOpacity style={styles.ButtonContainer} onPress={()=> this.props.navigation.navigate('AddNew')}>
<Text style={styles.buttonText} >GİRİŞ</Text>
</TouchableOpacity>  

1 个答案:

答案 0 :(得分:1)

您应通过调用RootStack来启动应用,如下所示:

class App extends Component{
    render(){
        return(
            <RootStack />
        );
    }
}

您还可以像这样在堆栈中设置initialRout:

const RootStack = createStackNavigator({
      Login: Login,
      AddNew: AddNewUser,
}, { initialRouteName: 'Login'} )

现在,按照您的定义,您的应用将从登录页面开始,并且它本身具有this.props.navigation,因此您可以无错误地使用this.props.navigation.navigate('AddNew')。 但是,如果您需要使用组件的导航,则必须像这样将this.props.navigation从父级发送到组件:

<YourComponent navigation={this.props.navigation}/>

然后,您可以在YourComponent组件中使用导航。 希望对您有帮助