从0死磕全栈之Next.js 拦截路由(Intercepting Routes)详解:实现模态框与上下文保持的利器

在现代 Web 应用中,我们经常需要在不跳转页面的情况下展示某些内容,比如点击图片弹出一个模态框(Modal),但又希望这个模态框的内容可以通过 URL 分享、刷新后依然存在,甚至支持浏览器前进/后退操作。Next.js 13+ 的 App Router 提供了一个强大的功能 —— 拦截路由(Intercepting Routes),完美解决这类需求。

本文将深入浅出地介绍拦截路由的概念、使用场景,并提供可直接运行的代码示例。


一、什么是拦截路由(Intercepting Routes)?

拦截路由允许你在当前布局中加载另一个路由的内容,而不真正跳转到那个路由。URL 会被“伪装”成目标路径,但页面结构仍保留在当前上下文中。

核心特点:

  • 软导航(Soft Navigation):点击链接时,内容以内联方式(如 Modal)展示,URL 变化但页面不刷新。
  • 硬导航(Hard Navigation):直接访问 URL 或刷新页面时,渲染完整的目标页面。
  • URL 可分享:Modal 中的内容拥有独立 URL,用户可直接分享。
  • 浏览器历史兼容:支持前进/后退操作,Modal 会自动打开或关闭。

✅ 举个例子:
/feed 页面点击一张图片,URL 变为 /photo/123,但页面仍显示在 /feed 的上下文中(比如以 Modal 形式展示照片)。
而如果你直接在浏览器输入 /photo/123 并回车,则会渲染完整的照片页面。


<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

golang学习记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值