javascript - 在路由组件之外反应路由重定向
问题描述
我在我的 React 应用程序中使用 React Router。在不在路由器组件内的 Header 组件中,我想在注册表单后重定向用户,但由于 Header 组件在路由器组件之外,我无法使用this.props.history.push('/');
。如何在 Header 组件中重定向用户?这是我的应用组件:
<div>
<Header order={this.order}/>
<Router data={this.state.data}>
<div>
<Menu data={this.state.data}/>
<Route exact path="/" component={Home} />
<Route exact path="/post" component={PostList} />
<Route path="/showpost/:slug" component={ShowPost} />
<Route path="/page/:slug" component={ShowPage} />
<Route path="/login" component={Login} />
<Route path="/register" component={Register} />
<Route path="/forgotpassword" component={Forgot} />
<Route path="/password/reset/:token" component={Reset} />
<Route path="/logout" component={Logout} />
<Route path="/user" component={User} />
<Route path="/saveorder" render={()=><SaveOrder data={this.state.data}/>} />
</div>
</Router>
<Map />
<Footer />
</div>
解决方案
this.props.history.push('/')
如果您的 Header 组件被传递给 withRouter HOC,您可以使用。withRouter 允许您在组件道具中获取历史记录。
所以...在 Header 组件中,您应该导入 withRouter HOC
import { withRouter } from 'react-router-dom';
并像这样导出您的 Header 组件:
export default withRouter(Header);
您可以在此处找到有关程序化导航的更多信息https://tylermcginnis.com/react-router-programmatically-navigate/
在帖子的末尾可以找到您想要做的事情的一个例子:)
推荐阅读
- php - 单击链接时使用 JQUERY 和 PHP 更新 mysql
- tensorflow - 如何在每个时期完全洗牌 TensorFlow 数据集
- asp.net-web-api - Web Api Owin - 忘记密码
- bootstrap-4 - 引导列错误
- excel - Excel 忽略重复项并动态列出唯一值
- java - 在“OnCompletionListener()”内的 Music 对象上使用“dispose()”?
- r - 标记化问题
- javascript - 从 HTML 在 div 中添加新元素
- python - Web 使用 serp 分页内容抓取论坛的多个页面
- python - Keras 错误:[0, 0] 中的预期大小 [1],但得到了 1