未定义不是对象(评估'this.props.navigation.navigate')

时间:2018-07-29 08:10:41

标签: reactjs react-native react-navigation

有人可以帮助我吗?我不断收到错误消息(请参见标题)。

我知道在StackOverflow之前有很多人问这个问题。我读了他们的答案,但是当我粘贴解决方案时,我仍然不断遇到此错误。

下面是代码。

非常感谢您。

//Jimmy code
import { Navigation } from 'react-native-navigation';
import { StackNavigator } from 'react-navigation';
import { Merchant2 } from "./../Merchant2/Merchant2";

export class Login extends React.Component{

    constructor(prop) {

        super(prop);

        Navigation.events().bindComponent(this);

        this.state = {
          userName: "",
          password: "",
          isVerify: false
        };

         this.onPress=this.onPress.bind(this);

    }

    onPress = () => {

        //const { navigate } = this.props.navigation;
        navigate('Page2');

        alert(1)
    }

     render() {


      navigationOptions = {
        title: 'Results',
      };

        return (
                    <View style={[styles.formFooter]}>
                        <TouchableHighlight style={[commonStyles.alignItemsCenter, styles.loginBtn]}
                                            activeOpacity={1}
                                            underlayColor={'#cdcdcf'}
                                            onPress={this.onPress.bind(this)}
                        >

        );
    };
}

const App = StackNavigator({
  Home: { screen: Merchant2 },
});

export default App;

1 个答案:

答案 0 :(得分:0)

这里有几件事:

  • 您应使用名称与本地名称不同的方法,例如“ onPress”
  • 如果您没有导航道具,那仅仅是因为您从未在堆栈导航中引用它。在导航对象中指定了所有视图的项目都应具有导航道具。
  • 如果您在组件中定义
  • navigationOptions或类似static,则应将其标记为Login.navigationOptions。另外,如果要从在导航选项中创建的元素的操作中添加导航选项,则可以像在组件中那样执行:static navigationOptions = ({navigation}) => ({your navigation options here})