Javascript 无法读取属性';道具';未定义的

Javascript 无法读取属性';道具';未定义的,javascript,reactjs,react-native,Javascript,Reactjs,React Native,你得对我宽容点。。很新的反应 我有一段代码,非常简单: export default class signup extends Component { constructor(props){ super(props); this.state = { loaded: true, email: '', password: '' }; } signup(

你得对我宽容点。。很新的反应

我有一段代码,非常简单:

export default class signup extends Component {

      constructor(props){
        super(props);

        this.state = {
          loaded: true,
          email: '',
          password: ''
        };
      }

      signup(){

        this.setState({
          loaded: false
        });




    firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function() {

      this.props.navigator.push({
          component: Login
        });

    }, function(error) {
      // An error happened.
      var errorCode = error.code;
      var errorMessage = error.message;
      console.log("ERROR WITH SIGNIN")
      console.log( errorMessage )
    });




      }

      goToLogin(){
        this.props.navigator.push({
          component: Login
        });
      }

      render() {
        return (
          <View style={styles.container}>
            <Header text="Signup" loaded={this.state.loaded} />
            <View style={styles.body}>

              <TextInput
                style={styles.textinput}
                onChangeText={(text) => this.setState({email: text})}
                value={this.state.email}
                placeholder={"Email Address"}
              />
              <TextInput
                style={styles.textinput}
                onChangeText={(text) => this.setState({password: text})}
                value={this.state.password}
                secureTextEntry={true}
                placeholder={"Password"}
              />
              <Button 
                text="Signup" 
                onpress={this.signup.bind(this)} 
                button_styles={styles.primary_button} 
                button_text_styles={styles.primary_button_text} />

              <Button 
                text="Got an Account?" 
                onpress={this.goToLogin.bind(this)} 
                button_styles={styles.transparent_button} 
                button_text_styles={styles.transparent_button_text} />
            </View>
          </View>
        );
      }
    }

    AppRegistry.registerComponent('signup', () => signup);
但是,当我单击“注册”按钮时,它会抛出错误

无法读取未定义的属性“props”

我想我可以把同样的代码块放在它上面运行:

 this.props.navigator.push({
          component: Login
        });
但是,它会导致错误。我有点困惑为什么会发生这种情况,因为它在另一个函数中工作得很好。。我确信这只是我和我对英语的缺乏理解。。
谢谢大家

您需要使用bind或arrow函数

firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function() {

  this.props.navigator.push({
      component: Login
    });

}.bind(this), function(error) {
  // An error happened.
  var errorCode = error.code;
  var errorMessage = error.message;
  console.log("ERROR WITH SIGNIN")
  console.log( errorMessage )
});

您在按钮中使用的onpress事件不应该像onpress一样。这可能是你的问题的原因
firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function() {

  this.props.navigator.push({
      component: Login
    });

}.bind(this), function(error) {
  // An error happened.
  var errorCode = error.code;
  var errorMessage = error.message;
  console.log("ERROR WITH SIGNIN")
  console.log( errorMessage )
});
firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(() => {

  this.props.navigator.push({
      component: Login
    });

}, function(error) {
  // An error happened.
  var errorCode = error.code;
  var errorMessage = error.message;
  console.log("ERROR WITH SIGNIN")
  console.log( errorMessage )
});