page.js
El archivo page
te permite definir una interfaz de usuario (UI) que es única para una ruta. Puedes crear una página exportando por defecto un componente desde el archivo:
Es bueno saber
- Las extensiones de archivo
.js
,.jsx
o.tsx
pueden usarse parapage
. - Una
page
siempre es la hoja del subárbol de rutas. - Se requiere un archivo
page
para que un segmento de ruta sea accesible públicamente. - Las páginas son Componentes de Servidor (Server Components) por defecto, pero pueden configurarse como Componentes de Cliente (Client Component).
Referencia
Props
params
(opcional)
Una promesa que se resuelve en un objeto que contiene los parámetros de ruta dinámica desde el segmento raíz hasta esa página.
Ejemplo de Ruta | URL | params |
---|---|---|
app/shop/[slug]/page.js | /shop/1 | Promise<{ slug: '1' }> |
app/shop/[category]/[item]/page.js | /shop/1/2 | Promise<{ category: '1', item: '2' }> |
app/shop/[...slug]/page.js | /shop/1/2 | Promise<{ slug: ['1', '2'] }> |
- Dado que el prop
params
es una promesa, debes usarasync/await
o la funciónuse
de React para acceder a los valores.- En la versión 14 y anteriores,
params
era un prop síncrono. Para mantener la compatibilidad hacia atrás, aún puedes acceder a él de forma síncrona en Next.js 15, pero este comportamiento quedará obsoleto en el futuro.
- En la versión 14 y anteriores,
searchParams
(opcional)
Una promesa que se resuelve en un objeto que contiene los parámetros de búsqueda de la URL actual. Por ejemplo:
Ejemplo de URL | searchParams |
---|---|
/shop?a=1 | Promise<{ a: '1' }> |
/shop?a=1&b=2 | Promise<{ a: '1', b: '2' }> |
/shop?a=1&a=2 | Promise<{ a: ['1', '2'] }> |
- Dado que el prop
searchParams
es una promesa, debes usarasync/await
o la funciónuse
de React para acceder a los valores.- En la versión 14 y anteriores,
searchParams
era un prop síncrono. Para mantener la compatibilidad hacia atrás, aún puedes acceder a él de forma síncrona en Next.js 15, pero este comportamiento quedará obsoleto en el futuro.
- En la versión 14 y anteriores,
searchParams
es una API Dinámica cuyos valores no pueden conocerse de antemano. Usarlo hará que la página utilice renderizado dinámico en el momento de la solicitud.searchParams
es un objeto JavaScript plano, no una instancia deURLSearchParams
.
Ejemplos
Mostrar contenido basado en params
Usando segmentos de ruta dinámica, puedes mostrar o obtener contenido específico para la página basado en el prop params
.
Manejo de filtros con searchParams
Puedes usar el prop searchParams
para manejar filtrado, paginación u ordenación basados en la cadena de consulta de la URL.
Lectura de searchParams
y params
en Componentes de Cliente
Para usar searchParams
y params
en un Componente de Cliente (que no puede ser async
), puedes usar la función use
de React para leer la promesa:
Historial de versiones
Versión | Cambios |
---|---|
v15.0.0-RC | params y searchParams ahora son promesas. Hay disponible un codemod. |
v13.0.0 | Se introdujo page . |