我有一个可以搜索的网站。我希望用户能够单击搜索结果并在叠加层中打开产品而不是重新加载整个页面,但是我希望 url 栏中的 url 是正确的产品页面,以便用户复制并粘贴它或在新选项卡中打开它,他们将获得产品页面。我还希望后退按钮在这两种情况下都可以使用。
这是该过程的更详细说明。
- 用户导航到 /list?keywords=widget 的列表页面
- 用户点击产品
- 产品的内容在叠加层上动画,但列表页面没有卸载,它仍然在产品页面下方
- URL 栏更新以反映用户在 /products/123 上,但实际上并未加载产品页面。
- 如果用户点击后退按钮,则覆盖消失。
- 如果用户在覆盖打开时点击刷新按钮,他们将获得产品页面的 ssr 版本,下面的列表页面不再存在。
起初我以为我可以使用 Next/Router 上的 {shallow:true} 选项来使其工作,但文档特别指出这仅适用于同一页面导航(使用不同的查询字符串)。
我唯一的想法是,我可以将链接设置为正确的,但在浏览器中劫持它以在历史状态下以纯 javascript 执行某些操作,但我不确定是否可以从等式中删除下一个路由器。
为了清楚起见,我不是在寻求产品页面或覆盖本身的帮助,我可以轻松地创建在两种情况下显示相同内容的共享组件,特别是我请求帮助的路由和 URL 问题。
任何帮助,即使只是指向正确方向的指针,也将不胜感激。