2017-12-22 2 views
0

Dies ist eine Anmeldekomponente, die Meteor verwendet. Ich kann erfolgreiche Benutzer nicht zu einem anderen Bildschirm "Home" umleiten. Der Fehler ist: undefined ist kein Objekt (Auswertung '_this2.props.navigation.navigate'). Ich habe versucht, die Umleitung in eine Callback-Funktion zu setzen, aber es tut das gleiche.Umleiten von Benutzern beim Anmelden nicht möglich ReactNative

Ich habe gerade diesen Beitrag mit dem vollständigen Komponentencode bearbeitet.

class SignIn extends Component { 

    constructor(props){ 
     super(props); 
     this.state={ 
     email:'', 
     password:'', 
     error: null, 
     loading: false, 
     }; 
    } 


    isValid() { 
     const { email, password } = this.state; 
     let valid = false; 

     if (email.length > 0 && password.length > 0) { 
     valid = true; 
     } 

     if (email.length === 0) { 
     this.setState({ error: 'You must enter an email address' }); 
     } else if (password.length === 0) { 
     this.setState({ error: 'You must enter a password' }); 
     } 
     return valid; 
    } 


    onSignIn() { 
     const { email, password } = this.state; 


     Meteor.loginWithPassword(email, password, (error) => { 
      if (error) { 
      this.setState({ error: error.reason }); 
      console.log(error, 'erreur dans le sign in') 
      }else{ 
      this.props.navigation.navigate('Home')//HERE 
      } 
     }); 
    } 

    onCreateAccount() { 
     const { email, password } = this.state; 


     if (this.isValid()) { 
     Accounts.createUser({ email, password }, (error) => { 
      if (error) { 
      this.setState({ error: error.reason }) 
      } else { 
      this.setState({email:''}) 
      // temp hack that you might need to use 
      }; 
     }); 
     } 
     } 


render() { 
    return (
     <View style={styles.container}> 


...email input here 

...password input here 

     <TouchableOpacity style={styles.button} onPress={this.onSignIn.bind(this)}> 
      <Text style={styles.buttonText}>Sign In</Text> 
     </TouchableOpacity> 

     </View> 
    ); 
    } 
} 
+0

Wir müssen den gesamten Komponentencode überprüfen .. und die Konsole zeigt eine Fehlermeldung? –

+0

Ich habe gerade den vollständigen Code bearbeitet ;-) – Sonia

+0

Könnten Sie bitte die index.js und die Datei hinzufügen, in der Sie Ihre Routen zur Navigation hinzufügen? Übrigens gibt es in dieser Komponente keinen Aufruf zur Navigation. –

Antwort

0

begegnete ich ein seltsames Problem wie dieses eine Mal

ich die Navigation prop durch den Funktionsaufruf als Argument übergeben musste zu verwenden.

<MenuItem onPress={() => this.onVehicleCreatePress(this.props.navigation)}>Add New Vehicle</MenuItem> 

onVehicleCreatePress(props) { 
    props.navigate('VehicleCreateScreen') 
    this.menu.hide(); 
    } 
Verwandte Themen