2016-05-15 13 views
2

ich solche Fehler empfangen, wenn ich versuche Router an die Komponente Login passieren:reagieren-Router und Kontexttypen

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; 

Dann versuche ich es auf die Aktion zu übergeben login zu ermöglichen, auf die andere Route umgeleitet nach dem Loggen. Aktion Anmeldung:

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

} 

}

Aber nachdem es in der Konsole Anmeldung ist ein Fehler: „Warnung: Fehler Kontextarten: Unzulässige Kontext router vom Typ object zu Login geliefert, function erwartet Überprüfen Sie die. Render-Methode von RouterContext. "

Es scheint mir, dass ich func passiert habe. kein object Typ so dass ich von keine Ahnung, wo dieser Fehler kommen haben ...

+0

Hast du console.log versucht, um zu sehen, ob es eine Funktion ist oder nicht? Dies ist möglicherweise nicht das, was Sie denken, dass es in onClick ist – hansn

Antwort

5

router ist ein Ziel:

dieses

Versuchen:

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

Geben Sie Folgendes an:

router: function() { React.PropTypes.func.isRequired } 
Verwandte Themen