Javascript goBack按钮,同时使用react路由器保留url状态
为了记录在案,我仍然在使用react路由器0.13.x。好的,这就是我要做的: 我有主视图(栅格)和详图视图。在详图视图中有两个选项卡(每个选项卡都是项目内部的一条管线)。比如:Javascript goBack按钮,同时使用react路由器保留url状态,javascript,reactjs,react-router,html5-history,Javascript,Reactjs,React Router,Html5 History,为了记录在案,我仍然在使用react路由器0.13.x。好的,这就是我要做的: 我有主视图(栅格)和详图视图。在详图视图中有两个选项卡(每个选项卡都是项目内部的一条管线)。比如: grid/ item/ tab/ tab/ 网格可以通过以下方式在url中进行查询: 在网格组件中,我们可以更改排序,这将反映到URL中。我想要实现的是组件中的后退按钮 我尝试了react router的goBack(),但我有两个主要问题: 如果用户单击组件内的选项卡,则goBack()函数将返
grid/
item/
tab/
tab/
网格可以通过以下方式在url中进行查询:
在网格组件中,我们可以更改排序,这将反映到URL中。我想要实现的是
组件中的后退按钮
我尝试了react router的goBack()
,但我有两个主要问题:
- 如果用户单击
组件内的选项卡,则
函数将返回到上一个选项卡,而不是goBack()
(这当然是正常的,但不是我想要的) - 如果用户在看到
组件时刷新页面,单击goBack将显示:
警告:由于没有路由器历史记录,已忽略goBack()
下一次尝试使用getCurrentRoutes()
:
this.context.router.transitiono(routes[routes.length-2].path)代码>
问题是,用户将丢失对
的排序选择。因此,如果用户将排序更改为姓氏:,单击某个项目并使用“后退”按钮,他将返回默认路径:。如果用户使用本机浏览器后退按钮,则不会发生这种情况,即使用户刷新
页面,单击本机后退按钮将使用正确的排序查询将用户带到
我想我在这里看到的基本上是一个goBack(),它返回到父路由(在本例中为
),忽略
的内部路由,然后是一种在返回
时保留url查询的方法
关于如何实现我在这里所做的更好的事情,您有什么想法吗?您可以在转换到下一个选项卡时,将当前查询参数(可从this.props.location.query
访问)放入location对象中,如下所示:
// go to next tab
this.context.router.push({
pathname:'/tab2',
query: this.props.location.query})
// go back
this.context.router.push({
pathname: routes[routes.length-2].path, // your grid path
query: this.props.location.query})
希望能有帮助