平行路由与拦截

同一条 URL,两种渲染:从列表点进去是弹层(列表不卸载),刷新或硬导航是完整页。@modal 负责槽,(.)shot 负责拦截,default.tsx 保证直接打开列表时槽是空的

从列表点进去

这些链接走客户端导航,会被 @modal/(.)shot 拦截。看完按 Esc 或点遮罩回来

什么时候用拦截,什么时候不用

拦截保存的是列表的挂载,不是一份第二套数据

  • 详情盖在列表上、关掉后滚动和筛选还在:用平行槽 + 拦截。URL 可复制,刷新仍是完整页
  • 详情就是这次访问的主体(文章、设置页):不要拦截,直接渲染完整页
  • default.tsx不能省。没有它,软导航回到列表时 @modal 没有匹配,槽会 404
  • 拦截只发生在客户端导航。本页弹层里的「硬导航」用的是普通 a 标签,就是为了绕过它