【发布时间】:2018-11-04 01:54:57
【问题描述】:
场景:
有一个主页,从那里搜索用户被重定向到一个带有查询参数的搜索页面(例如 q=abc)。现在在搜索页面上,用户再次尝试搜索不同的值,因此他再次被重定向到相同的搜索页面,但查询参数不同(例如 q=xyz)
问题:
当我尝试使用不同的查询参数再次从搜索页面执行重定向到同一路由时,我收到错误消息“您尝试重定向到当前所在的同一路由”。
预期结果:
用户应该使用不同的查询参数再次重定向到相同的路由,以便在按下返回按钮时,他可以返回到上一个查询,就像它不是 SPA 时一样。结果应该类似于我使用相同组件将用户从 /search/abc 重定向到 /search/xyz 的情况。
可能的解决方案:
在提交搜索查询时,我可以检查它是否是相同的路由,并基于此我可以以某种方式重定向或更新组件状态。此解决方案的问题是用户无法在单击浏览器的后退按钮时返回上一个查询。我希望将页面添加到历史记录中。
代码片段:
在主页和搜索页面上都存在的搜索组件内的渲染函数中使用以下代码进行重定向
if (this.state.isReady) {
let queryString = "q=" + this.state.q;
return (
<Redirect push to={`/search/hotels?${queryString}`} />
);
}
我认为这是任何具有搜索功能的网站的常见问题,因此应该有一种优雅的方式来处理这种情况,但我无法考虑。
【问题讨论】:
-
你是如何重定向的?你能显示那个代码吗?
-
@azium 添加重定向代码 sn-p
标签: reactjs react-router