gpt4 book ai didi

reactjs - React-router:如何在onEnter处理程序中获取上一个路由?

转载 作者:行者123 更新时间:2023-12-03 14:04:39 69 4
gpt4 key购买 nike

我正在尝试找到一种方法,当用户在 onEnter 处理程序中点击新路线/路径时读取先前的路线/路径。

我有一个像这样结构的 React Router:

    <Router history={history}>
<div className="index">
<Route
path="/"
component={ComposedAppComponent}
onEnter={this.onEnterHandler.bind(this)}
>
<Route name="streamKey" path=":streamKey">
<Route name="articleUri" path="(**)" />
</Route>
</Route>
</div>
</Router>

函数 onEnterHandler 看起来像这样:

  onEnterHandler(nextRouteState) {
const { streamKey, splat } = nextRouteState.params;

const nextPath = `/${streamKey}/${splat}`;
const prevPath = // HOW DO I GET THE PREVIOUS PATH?
}

我似乎无法找到一种方法来读取用户之前所在的路线路径...我需要在新路线和之前的路线之间进行比较。非常感谢任何有关如何解决此问题的意见。 :)

干杯!

最佳答案

当用户通过地址栏导航到新路径或使用像 this.context.router.push() 这样的 react 路由器时,您是否试图获取以前的路径?

如果导航使用react-router,也许这些简单的方法就能得到​​你正在寻找的东西:

<强>1。使用query-params传递prevPath

导航可能如下所示:

`<Link to="/next" query={{ prevPath: this.props.location.pathname }}> Your Next path</Link>`

现在,您可以使用以下方法在 onEnterHandler 方法上获取 prevPath 值:nextState.location.query.prevPath

  • 缺点:查询将出现在地址栏上。
  • 优点:当用户通过地址栏导航(直接路径访问)时,您仍然能够获取 prevPath

<强>2。使用状态传递 prevPath

导航可能如下所示:

`<Link to="/next" state={{ prevPath: this.props.location.pathname }}> Your Next path</Link>`

现在,您可以使用以下方法在 onEnterHandler 方法上获取 prevPath 值:nextState.location.state.prevPath

  • 缺点:查询不会出现在地址栏上。
  • 优点:当用户通过地址栏导航(直接路径访问)时,您无法获取 prevPath

此外,这些方法的缺点是您应该为每个 Link 组件分配一个 prevPath 值。为 Link 组件创建一个包装组件可以解决这个问题。

关于reactjs - React-router:如何在onEnter处理程序中获取上一个路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654475/

69 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com