Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript goBack按钮,同时使用react路由器保留url状态_Javascript_Reactjs_React Router_Html5 History - Fatal编程技术网

Javascript goBack按钮,同时使用react路由器保留url状态

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()函数将返

为了记录在案,我仍然在使用react路由器0.13.x。好的,这就是我要做的:

我有主视图(栅格)和详图视图。在详图视图中有两个选项卡(每个选项卡都是项目内部的一条管线)。比如:

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})
希望能有帮助