【问题标题】:react-router Cannot read property 'push' of undefinedreact-router无法读取未定义的属性'push'
【发布时间】:2016-02-28 11:14:42
【问题描述】:

通过我的 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);
  }
},

这基于 react-router 教程。

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 中记录错误:无法读取未定义的属性 'context'”。

谁能帮我解决这个问题?被困在这里好几个小时了。谢谢!

【问题讨论】:

  • 你有没有从 react-router 导入 browserHistory。 import { browserHistory } from 'react-router' 还有什么版本的 react-router 用的?

标签: javascript reactjs react-router


【解决方案1】:

无论出于何种原因,调用this.context.router.push('/') 都不起作用。然而,当使用browserHistory.push('/') 时,url 会发生变化。此时,如果您刷新页面,它应该会更改页面。然而,根据我目前所读到的内容,我不知道使用反应路由器从您的服务器加载另一个页面是最好的方法。

【讨论】:

    【解决方案2】:

    原来是 browserHistory.push('/');工作正常。失败的原因是由于不正确的 react-router 库。

    【讨论】:

    • 不正确的 react-router 库是什么意思?你是怎么解决这个问题的?
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2021-12-04
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多