开发者问题收集

React Native - 将一个屏幕推送到另一个屏幕有问题

2017-07-29
166

我使用了 ' StackNavigator ',在按钮事件中写入导航代码时,我遇到了推送问题。但如果我们直接编写 onPress 事件,它就可以正常工作,

导入文件。

import { StackNavigator } from "react-navigation";
import SignUpScreen from "./SignUp";

推送另一个正在工作:

render() {
    console.disableYellowBox = true;
    const { navigate } = this.props.navigation;
    return (
       <View style={styles.viewStyle}>
         <TouchableHighlight style = {styles.buttonStart}
             onPress={() => navigate("SignUpCompany")}>
               <Image
                 source={require('./Images/hire.png')}
               />
         </TouchableHighlight>
       </View>
    );
  }

通过函数推送另一个不起作用:

pushcode() {
     console.log('call');
     this.props.navigation.navigate('SignUp');
   }

   render() {
    return (

     <TouchableHighlight style = {styles.buttonStart}
         onPress={this.pushcode}>
           <Image
             source={require('./Images/hire.png')}
           />
     </TouchableHighlight>

    );}

单击按钮时出错:

在此处输入图像描述

谢谢。请帮帮我。

2个回答

看起来你在这行中使用了 push extra

this.props.navigation.navigate.push('SignUp');

试试这个会对你有用

this.props.navigation.navigate('SignUp');

也许这可以帮助你

HpDev
2017-07-29

我认为您错过了构造函数中的函数 bind --- 这就是为什么您得到 undefined is not an object (evaluating 'this.props.navigation') 。因为 thispushcode 函数范围内未定义。

将以下内容添加到您的构造函数中:

constructor(props) {
    super(props);

    this.pushcode = this.pushcode.bind(this);
    ...
}
Val
2017-08-03