Pre*_*fix 4 reactjs react-router react-router-redux
当用户在onEnter处理程序中点击新路线/路径时,我试图找到一种方法来读取之前的路线/路径。
我有一个像这样结构的 React 路由器:
<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>
Run Code Online (Sandbox Code Playgroud)
函数 ,onEnterHandler看起来像这样:
onEnterHandler(nextRouteState) {
const { streamKey, splat } = nextRouteState.params;
const nextPath = `/${streamKey}/${splat}`;
const prevPath = // HOW DO I GET THE PREVIOUS PATH?
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到一种方法来读取用户所在的先前路线路径……我需要在新路线和先前路线之间进行比较。任何关于如何解决这个问题的意见都非常感谢。:)
干杯!
小智 10
当用户通过地址栏或使用 react-router 导航到新路径时,您是否试图获取以前的路径this.context.router.push()?
如果导航正在使用react-router,也许这些简单的方法会得到您正在寻找的内容:
1.通过prevPath使用query-params
导航可能如下所示:
`<Link to="/next" query={{ prevPath: this.props.location.pathname }}> Your Next path</Link>`
Run Code Online (Sandbox Code Playgroud)
现在,您可以onEnterHandler使用以下方法在方法上获取 prevPath 值:
nextState.location.query.prevPath
prevPath当用户浏览地址栏(直接路径访问)时,您仍然可以获取您的信息。2.通过prevPath使用状态
导航可能如下所示:
`<Link to="/next" state={{ prevPath: this.props.location.pathname }}> Your Next path</Link>`
Run Code Online (Sandbox Code Playgroud)
现在,您可以onEnterHandler使用以下方法在方法上获取 prevPath 值:
nextState.location.state.prevPath
prevPath当用户浏览地址栏(直接路径访问)时,您无法获得您的信息。此外,这些方法的缺点是您应该prevPath为每个 Link 组件分配一个值。为 Link 组件创建一个包装组件可以解决这个问题。
| 归档时间: |
|
| 查看次数: |
21462 次 |
| 最近记录: |