2017-12-22 13 views
0

これはMeteorを使用するログインコンポーネントです。 成功したユーザーを別の画面「ホーム」にリダイレクトすることはできません。 エラー: 未定義はオブジェクトではありません(評価 '_this2.props.navigation.navigate')。 私はリダイレクトをコールバック関数に入れようとしましたが、同じことをします。ログイン時にユーザーをリダイレクトできないReactNative

この投稿を全コンポーネントコードで編集しました。

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

コンポーネントコード全体を確認する必要があります。コンソールにエラーメッセージが表示されますか? –

+0

私は完全なコードを編集しました;-) – Sonia

+0

ナビゲーションにルートを追加するindex.jsとファイルを追加できますか?ところで、このコンポーネントのナビゲーションへの呼び出しはありません。 –

答えて

0

私は私が使用する引数として関数呼び出しを通じてナビゲーション小道具を渡すために持っていた

たら、このような奇妙な問題が発生しました。

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

onVehicleCreatePress(props) { 
    props.navigate('VehicleCreateScreen') 
    this.menu.hide(); 
    } 
関連する問題