设想:
有一个主页,从那里搜索用户被重定向到带有查询参数的搜索页面(例如 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}`} />
);
}
我认为这是任何具有搜索功能的网站的常见问题,因此应该有一种优雅的方法来处理这种情况,但我无法考虑。