我读了this page from Next docs关于拦截路由的内容,我正试图将其构建到我的应用程序中。具体来说,我希望在单击按钮时弹出一个模态,但如果用户刷新页面,则模态为全屏。然而,文档描述的是/app目录,而我的文档仍然使用/pages。我正在努力做到以下几点:
pages
| (.)photo
| | [id].tsx
| photo
| | [id].tsx
我希望当我调用router.push('/photo/'+id);
时,我会得到模态,但我只是在页面上结束。这是不可能做到的,还是我错过了什么?我是否需要为此将所有内容迁移到/app?
2条答案
按热度按时间gg0vcinb1#
在撰写本文时,拦截路由仅在应用路由器中可用。
您可以注意到它们仅在应用程序(而不是页面)下列出:https://nextjs.org/docs/getting-started/project-structure#parallel-and-intercepted-routes
您不需要将整个应用程序升级到应用程序目录来使用拦截路由,只需将依赖于它的部分升级即可。
4sup72z82#
我还在寻找页面路由器的方法。我希望他们将来会支持它。我查询路由并在router.push中用as值屏蔽url。它将像拦截路由一样工作,当我们刷新它时,它将重定向到实际页面。但我们得自己处理零件。用户查询存在时显示用户拦截路由组件的示例。