【发布时间】:2021-04-04 04:34:01
【问题描述】:
我有一个可以搜索的网站。我希望用户能够单击搜索结果并在叠加层中打开产品而不是重新加载整个页面,但是我希望 url 栏中的 url 是正确的产品页面,以便用户复制并粘贴它或在新选项卡中打开它,他们将获得产品页面。我还希望后退按钮在这两种情况下都可以使用。
这里有一个更详细的过程说明。
- 用户导航到位于 /list?keywords=widget 的列表页面
- 用户点击产品
- 产品内容在叠加层上以动画形式显示,但列表页面未卸载,它仍位于产品页面下方
- URL 栏会更新以反映用户在 /products/123 上,但实际上并未加载产品页面。
- 如果用户点击后退按钮,则覆盖消失。
- 如果用户在覆盖打开时点击刷新按钮,他们将获得产品页面的 ssr 版本,下面的列表页面不再存在。
起初我以为我可以使用 Next/Router 上的 {shallow:true} 选项来使其工作,但文档特别指出这仅适用于同一页面导航(使用不同的查询字符串)。
我唯一的想法是,我可以将链接设置为正确的,但在浏览器中劫持它以在历史状态下以纯 javascript 执行某些操作,但我不确定是否可以从中删除 Next Router等式。
为了清楚起见,我不是在寻求产品页面或叠加层本身的帮助,我可以轻松创建在两种情况下显示相同内容的共享组件,特别是我请求帮助的路由和 URL 问题与。
非常感谢任何帮助,即使只是指向正确方向的指针。
【问题讨论】:
-
你会在这个视频中找到你的答案youtube.com/watch?v=EyjuRCxpf6Y ..祝你好运
-
尽管有其他有用的答案,但这个视频是其中答案最好的视频。如果您可以通过代码的小示例添加快速答案,我很乐意将其标记为正确并给您积分。
-
完成。我终于有时间给你一个完整的答案。希望对您有所帮助。
标签: reactjs next.js next-router