2016-02-28 51 views
3

我使用react-router在通过REST API登录后导航到某个页面。react-router无法读取未定义的属性“推送”

这里是我的代码样本,尝试这样做:

export default { 
    loginUser: (jwt, rememberMe) => { 
    var savedJwt = localStorage.getItem('jwt'); 

    AppDispatcher.dispatch({ 
    actionType: 'LOGIN_USER', 
    jwt: jwt 
    }); 

    if (savedJwt !== jwt) { 
    browserHistory.push('/'); 
    localStorage.setItem('jwt', jwt); 
    } 
}, 

而且此基础上做出反应路由器教程。

export default { 
    loginUser: (jwt, rememberMe) => { 
    var savedJwt = localStorage.getItem('jwt'); 

    contextTypes: { 
     router: React.PropTypes.object 
    } 

    AppDispatcher.dispatch({ 
    actionType: 'LOGIN_USER', 
    jwt: jwt 
    }); 

    if (savedJwt !== jwt) { 
    this.context.router.push('/') 
    localStorage.setItem('jwt', jwt); 
    } 
}, 

但是,两者都不起作用。第一个抱怨“在TypeError中记录错误:无法读取未定义的属性”push“,而第二个抱怨”在TypeError中记录错误:无法读取未定义的属性'上下文“。

任何人都可以帮助我吗?一直呆在这里好几个小时。谢谢!

+3

您是否从react-router导入了浏览器历史记录。 '从'react-router''导入{browserHistory} 另外哪个版本的react-router正在使用? –

回答

-3

变成browserHistory.push('/');工作正常。失败的原因是由于反应路由器库不正确。

+3

_incorrect react-router libraries_是什么意思?你是如何解决这个问题的? – nburk

0

调用this.context.router.push('/')不会出于任何原因。但是,使用browserHistory.push('/')时URL会更改。此时,如果刷新页面,它应该更改页面。然而,根据我目前阅读的内容,我不知道使用react路由器从服务器加载另一个页面是最好的方法。

相关问题