usePathname
usePathname
是一个客户端组件 hook,用于读取当前 URL 的路径名。
usePathname
有意要求使用客户端组件。需要注意的是,客户端组件并不是一种去优化。它们是 Server Components 架构中不可或缺的一部分。
例如,在初始页面加载时,带有 usePathname
的客户端组件将被渲染成 HTML。当导航到新路由时,这个组件不需要重新获取。相反,该组件只需下载一次 (在客户端 JavaScript 包中),并根据当前状态重新渲染。
值得注意的是:
- 不支持从 Server Component 中读取当前 URL。这种设计是有意为之,目的是为了支持在页面导航过程中保留布局状态。
- 兼容模式:
- 当渲染 fallback 路由 时,或者当
pages
目录页面被 Next.js 自动静态优化且路由器未准备就绪时,usePathname
可能返回null
。- 当在
next.config
或Middleware
中使用重写功能时,必须同时使用useState
和useEffect
以避免水合不匹配错误。更多信息请参考重写示例。- 如果 Next.js 检测到你的项目中同时存在
app
和pages
目录,它会自动更新你的类型定义。
参数
usePathname
不接受任何参数。
返回值
usePathname
返回当前 URL 路径名的字符串。例如:
URL | 返回值 |
---|---|
/ | '/' |
/dashboard | '/dashboard' |
/dashboard?v=2 | '/dashboard' |
/blog/hello-world | '/blog/hello-world' |
示例
响应路由变化执行操作
版本 | 变更 |
---|---|
v13.0.0 | 引入 usePathname |