2016-05-15 2 views
2

я получил такую ​​ошибку, когда я пытаюсь передать маршрутизатор к компоненту Логин:реагировать-маршрутизатор и контекстные типы

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

} 

}

Но после входа в консоли есть ошибка: «Предупреждение: Ошибка Виды Контекст: Invalid контекст router типа object, подаваемого в Login, ожидается function Проверьте. метод рендеринга RouterContext. "

Мне кажется, что я прошел func. не object типа, так что я понятия не имею, где эта ошибка происходят из ...

+0

Вы попробовали console.log, чтобы узнать, является ли это функцией или нет? 'this' может и не быть тем, что, по вашему мнению, находится внутри onClick – hansn

ответ

5

router является объектом:

Попробуйте это:

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

Укажите следующие параметры:

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