【问题标题】:React-Router push only changes the URL and does not navigateReact-Router push 只改变 URL 不导航
【发布时间】:2016-10-11 17:22:19
【问题描述】:

我正在尝试使用 react-router 以编程方式导航,但我似乎无法这样做。

我已阅读其他相关问题,例如 this one,似乎对其他人有用,但无济于事。

我正在使用 react-router 2.4.1 版本,据我了解,它应该通过以下方式完成:

this.context.router.push('/');

甚至:

browserHistory = require('react-router').browserHistory;
//...
var browserHistory.push('/');

但无论采用哪种方法,我似乎都完成了 URL 重写,没有进行实际路由。

我的路由器上确实为“/”注册了一条路由。

我错过了什么?我距离 window.location = '/' 几英寸远,否则是单页应用程序:(

【问题讨论】:

  • 您是否在根组件中准确地使用了路由器?也许这方面的一些例子会有所帮助。 s 有用吗?
  • 是的,是的。我按照文档中的描述准确地使用了路由器,并且 工作正常。

标签: reactjs react-router


【解决方案1】:

我知道这已经有几个月了,但以防万一有人遇到类似问题。

一个简单的解决方法是添加以下代码:

static contextTypes = {
  router: PropTypes.object,
};

然后你可以使用: this.context.router.push('/foo');

Reference

【讨论】:

  • 在你的代码中添加这个?假设您使用的是class myComponent extends Component{...}
  • 好的,在课堂上。在这种情况下,如果你运行的是 ES6,你会得到一个错误。不知道如何解决这个问题。
【解决方案2】:

因此,显然是第三方组件摆弄了上下文和子项。删除它,现在它可以按预期工作了。

如果有人遇到这种情况,请尝试查看您路线上的组件如何处理上下文和子项。

【讨论】:

【解决方案3】:

以下代码是导航的工作示例

导航代码,

handleClick(e) {
    e.preventDefault();
    this.context.router.push('/aboutus');
  }

对于 React 组件,不要忘记引用 Context

Item.contextTypes = {
  router: PropTypes.object.isRequired
};

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 2016-12-14
    • 2018-01-27
    • 2015-11-19
    • 2020-09-01
    • 2021-04-24
    • 2017-10-14
    • 2016-03-31
    相关资源
    最近更新 更多