【问题标题】:How do I trigger a route manually with React router?如何使用 React 路由器手动触发路由?
【发布时间】:2016-01-25 16:24:53
【问题描述】:

正如标题所说,我有一张桌子。如果我点击一个 td,我想将用户转发到一个特定的 url。

现在我需要将一个对象传递给将要渲染的组件。

  • 如何将 props 动态传递给组件?
  • 如何手动触发路由?

我正在使用 React 0.14.6 和 react-router 1.0.3。

我的配置很简单:

<Provider store={store}>
    <Router>
      <Route path='/' component={App}>
        <IndexRoute component={SearchCustomer}/>
        <Route path='customerOverview/:props' component={CustomerOverview}/>
      </Route>
    </Router>
  </Provider>

customerOverview 需要在 onClick 被解析到组件时触发。

【问题讨论】:

  • 您是否尝试过使用 Link to={your url}source

标签: javascript reactjs react-router


【解决方案1】:

通过的道具可以从this.props.route访问:

this.props.route.yourCustomProp

您可以使用pushreplace 等常规历史模块方法以编程方式使用this.props.history 转到新路线:

this.props.history.push('/login')

如果您需要更深入地访问组件中的 history 属性,您可以使用 withRouter HOC。

对于 DOM 链接,请根据文档使用 Link

请注意,此答案已针对 react-router v4 进行了更新。旧版本的 react-router 使用旧的历史模块,上面有 pushState and replaceState

【讨论】:

  • 这实际上是不正确的。 pushState 方法的函数签名是 (state object, title, url) 带有“当前忽略的标题”developer.mozilla.org/en-US/docs/Web/API/History_API
  • 谢谢,我认为这有点过时了我已经更新了它,因为历史道具使用历史包,它有“推送”和“替换”,需要 1-2 个参数
猜你喜欢
  • 2017-06-07
  • 2019-11-13
  • 2021-07-26
  • 1970-01-01
  • 2012-06-12
  • 2022-01-21
  • 1970-01-01
  • 2019-08-11
  • 2014-08-09
相关资源
最近更新 更多