2016-07-15 3 views
1

Вы должны будете легко идти на меня .. очень новый Реагировать NativeНе удается прочитать свойство «реквизита» неопределенного

У меня есть этот кусок кода, довольно просто:

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); 

Я не понимаю, если я нажимаю «Go для входа» кнопка она запускает функцию отлично и идет на страницу входа

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

Однако при нажатии на кнопку Регистрация, он выдает ошибку

Не удается прочитать свойство «реквизита» неопределенной

Я полагал, что я мог бы просто поставить один и тот же блок кода для его запуска:

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

Однако это приводит к ошибке. Я немного смущен, почему это происходит, поскольку он отлично работает в другой функции. Я уверен, что это только я, и я не понимаю, как реагировать на родной язык. Спасибо, ребята!

+0

should'nt функцию ** onpress ** событие, которое вы используете в кнопке быть как ** onPress **. Это может быть причиной вашей проблемы –

ответ

1

Вы должны использовать привязку или стрелками функции

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) 
}); 
Смежные вопросы