useSearchParams
useSearchParams
是一个 客户端组件 hook,允许你读取当前 URL 的 查询字符串。
useSearchParams
返回 URLSearchParams
接口的 只读 版本。
useSearchParams
不接受任何参数。
useSearchParams
返回 URLSearchParams
接口的 只读 版本,包含用于读取 URL 查询字符串的实用方法:
值得注意的是:
useSearchParams
是一个 客户端组件 hook,不支持 服务器组件,以防止在 部分渲染 期间出现陈旧值。
- 如果应用程序包含
/pages
目录,useSearchParams
将返回 ReadonlyURLSearchParams | null
。null
值是为了兼容迁移期间的预渲染页面,因为搜索参数在未使用 getServerSideProps
的页面预渲染期间无法确定。
如果路由是 静态渲染,调用 useSearchParams
将导致客户端组件树到最近的 Suspense
边界 进行客户端渲染。
这允许路由的一部分静态渲染,而使用 useSearchParams
的动态部分进行客户端渲染。
我们建议将使用 useSearchParams
的客户端组件包裹在 <Suspense/>
边界中。这将允许其上方的任何客户端组件静态渲染并作为初始 HTML 发送。示例。
例如:
如果路由是 动态渲染,useSearchParams
将在客户端组件的初始服务器渲染期间在服务器上可用。
例如:
值得注意的是:设置 dynamic
路由段配置选项 为 force-dynamic
可以强制动态渲染。
要在 页面(服务器组件)中访问搜索参数,请使用 searchParams
属性。
与页面不同,布局(服务器组件)不 接收 searchParams
属性。这是因为共享布局在导航期间 不会重新渲染,这可能导致 searchParams
在导航之间陈旧。查看 详细解释。
相反,在客户端组件中使用页面 searchParams
属性或 useSearchParams
hook,该组件在客户端使用最新的 searchParams
重新渲染。
你可以使用 useRouter
或 Link
设置新的 searchParams
。导航完成后,当前的 page.js
将接收更新的 searchParams
属性。
版本 | 变更 |
---|
v13.0.0 | useSearchParams 引入。 |