2016-05-15 22 views
2

Iコンポーネントは、ログインにルータを通過しようとすると、このようなエラーを受信した:反応ルータおよびコンテキストタイプ

class Login extends React.Component { 

onClick(){ 
    Actions.login(this.context.router); 
} 

static contextTypes = { 
    router: React.PropTypes.func.isRequired 
} 

render(){ 

    return (
     <Card style={{ 
      'maxWidth': '800px', 
      'margin': '30px auto', 
      'padding': '50px' 
     }}> 
      <CardText style={{ 
      'textAlign': 'center' 
      }}> 
      To start chatting away, please log in with your Google account. 
      </CardText> 

      <RaisedButton style={{ 
      display: 'block', 
      }} onClick={this.onClick.bind(this)} 
      label="Log in with Google" primary={true} /> 
     </Card> 
    ); 
    } 
} 

export default Login; 

は、それから他の経路にリダイレクトすることが可能にするために作用loginにそれを通過しようとしますロギング後に アクションログイン:

login(router){ 
return (dispatch) => { 
    let firebaseRef = new Firebase('https://front-react-stack.firebaseio.com'); 
    firebaseRef.authWithOAuthPopup("google", (error, user) => { 
    if(error){ 
     return; 
    } 

    dispatch(user); 

    router.push('/chat'); 
    }); 

} 

}

しかし、エラーがあるコンソールにログインした後: 「警告:失敗したコンテキストタイプ:Loginに供給されるタイプobjectの無効なコンテキストrouterは、functionを期待確認してください。レンダリング方法はRouterContextです。

私はfuncを渡したようです。私は、このエラーから来る見当がつかないないobjectタイプ...

+0

はこれを試してみてくださいあなたはそれが機能かどうかを見るためにconsole.logを試しましたか? 'これは' onClickの内部にあるとは思えないかもしれません – hansn

答えて

5

routerはオブジェクトである:以下を指定して

static contextTypes = { 
    router: React.PropTypes.object.isRequired 
} 
0

router: function() { React.PropTypes.func.isRequired } 
関連する問題