useSearchParams
useSearchParams
es un hook de Componente Cliente que permite leer la cadena de consulta (query string) de la URL actual.
useSearchParams
devuelve una versión de solo lectura de la interfaz URLSearchParams
.
Parámetros
useSearchParams
no acepta ningún parámetro.
Retorno
useSearchParams
devuelve una versión de solo lectura de la interfaz URLSearchParams
, que incluye métodos útiles para leer la cadena de consulta de la URL:
-
URLSearchParams.get()
: Devuelve el primer valor asociado al parámetro de búsqueda. Por ejemplo:URL searchParams.get("a")
/dashboard?a=1
'1'
/dashboard?a=
''
/dashboard?b=3
null
/dashboard?a=1&a=2
'1'
- usagetAll()
para obtener todos los valores -
URLSearchParams.has()
: Devuelve un valor booleano que indica si existe el parámetro dado. Por ejemplo:URL searchParams.has("a")
/dashboard?a=1
true
/dashboard?b=3
false
-
Aprende más sobre otros métodos de solo lectura de
URLSearchParams
, incluyendogetAll()
,keys()
,values()
,entries()
,forEach()
, ytoString()
.
Nota importante:
useSearchParams
es un hook de Componente Cliente y no es compatible con Componentes Servidor para evitar valores obsoletos durante el renderizado parcial.- Si una aplicación incluye el directorio
/pages
,useSearchParams
devolveráReadonlyURLSearchParams | null
. El valornull
es para compatibilidad durante la migración, ya que los parámetros de búsqueda no se pueden conocer durante el pre-renderizado de una página que no usagetServerSideProps
.
Comportamiento
Renderizado Estático
Si una ruta se renderiza estáticamente, llamar a useSearchParams
hará que el árbol de Componentes Cliente hasta el límite Suspense
más cercano se renderice en el lado del cliente.
Esto permite que una parte de la ruta se renderice estáticamente mientras la parte dinámica que usa useSearchParams
se renderiza en el cliente.
Recomendamos envolver el Componente Cliente que usa useSearchParams
en un límite <Suspense/>
. Esto permitirá que los Componentes Cliente superiores se rendericen estáticamente y se envíen como parte del HTML inicial. Ejemplo.
Por ejemplo:
Renderizado Dinámico
Si una ruta se renderiza dinámicamente, useSearchParams
estará disponible en el servidor durante el renderizado inicial del servidor del Componente Cliente.
Por ejemplo:
Nota importante: Configurar la opción
dynamic
en el segmento de ruta comoforce-dynamic
puede usarse para forzar el renderizado dinámico.
Componentes Servidor
Páginas
Para acceder a los parámetros de búsqueda en Páginas (Componentes Servidor), usa la prop searchParams
.
Layouts
A diferencia de las Páginas, los Layouts (Componentes Servidor) no reciben la prop searchParams
. Esto se debe a que un layout compartido no se vuelve a renderizar durante la navegación, lo que podría llevar a searchParams
obsoletos entre navegaciones. Ver explicación detallada.
En su lugar, usa la prop searchParams
de la Página o el hook useSearchParams
en un Componente Cliente, que se vuelve a renderizar en el cliente con los searchParams
más recientes.
Ejemplos
Actualizando searchParams
Puedes usar useRouter
o Link
para establecer nuevos searchParams
. Después de realizar una navegación, la página page.js
actual recibirá una prop searchParams
actualizada.
Historial de Versiones
Versión | Cambios |
---|---|
v13.0.0 | Se introdujo useSearchParams . |