【问题标题】:react router v4 programmatically change route反应路由器v4以编程方式更改路由
【发布时间】:2017-09-03 02:50:24
【问题描述】:

似乎找不到很多关于此的高质量文档。 React Router v4 文档包含“历史”对象的信息,但声明它是可变的,不应更改。我见过的许多例子看起来像是“黑客”。任何见解将不胜感激。

【问题讨论】:

  • 这里已经回答了stackoverflow.com/questions/42672842/…。希望对您有所帮助。
  • @ToddChaffee 啊,我明白了。似乎可以在历史上推送新路由,但不信任历史对象的位置属性,因为它是可变的。谢谢!
  • 是的,你说的。根据我的经验,使用历史对象推送新路线效果很好。

标签: reactjs browser-history react-router-v4


【解决方案1】:

作为一个反应新手,我不得不与这个问题搏斗一段时间。虽然@ToddChaffee 提供的链接为您提供了很好的见解,但this 线程强调当您将<Router/> 作为顶级组件时,历史对象会自动作为道具传递。这比单独加载历史对象和使用createBrowserHistory() 方法要简单得多。

以下内容对我有用:

<Route exact path='/' render={({history}) => 
  <Home infoHandler={this.handleUserInfo} 
    imageHandler={this.handleImage} 
    history={history}/>
}/>

那么在组件内部你可以:

this.props.history.push('/routeYouWantToGoTo');

在导出模块之前不要忘记对组件中的 prop 进行类型检查:

Home.propTypes = {
  history: React.PropTypes.object
}

export default Home;

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2017-09-27
    • 2017-06-26
    • 2015-08-30
    • 1970-01-01
    • 2017-12-06
    • 2017-09-16
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多