getStaticProps
Exportar una función llamada getStaticProps
generará previamente una página en tiempo de compilación usando las props devueltas por la función:
Puedes importar módulos en el ámbito de nivel superior para usar en getStaticProps
. Las importaciones no se incluirán en el paquete para el lado del cliente. Esto significa que puedes escribir código del lado del servidor directamente en getStaticProps
, incluyendo la obtención de datos desde tu base de datos.
Parámetro context
El parámetro context
es un objeto que contiene las siguientes claves:
Nombre | Descripción |
---|---|
params | Contiene los parámetros de ruta para páginas que usan rutas dinámicas. Por ejemplo, si el nombre de la página es [id].js , entonces params se verá como { id: ... } . Debes usar esto junto con getStaticPaths , que explicaremos más adelante. |
preview | (Obsoleto en favor de draftMode ) preview es true si la página está en Modo de Vista Previa y false en caso contrario. |
previewData | (Obsoleto en favor de draftMode ) Los datos de vista previa establecidos por setPreviewData . |
draftMode | draftMode es true si la página está en Modo Borrador y false en caso contrario. |
locale | Contiene la configuración regional activa (si está habilitada). |
locales | Contiene todas las configuraciones regionales soportadas (si está habilitado). |
defaultLocale | Contiene la configuración regional predeterminada configurada (si está habilitada). |
revalidateReason | Proporciona una razón por la cual se llamó a la función. Puede ser uno de: "build" (ejecutado en tiempo de compilación), "stale" (el período de revalidación expiró, o se ejecuta en modo desarrollo), "on-demand" (activado mediante revalidación bajo demanda) |
Valores de retorno de getStaticProps
La función getStaticProps
debe devolver un objeto que contenga props
, redirect
o notFound
seguido de una propiedad opcional revalidate
.
props
El objeto props
es un par clave-valor, donde cada valor es recibido por el componente de página. Debe ser un objeto serializable para que cualquier prop pasado pueda ser serializado con JSON.stringify
.
revalidate
La propiedad revalidate
es la cantidad en segundos después de la cual puede ocurrir una regeneración de página (por defecto es false
o sin revalidación).
Aprende más sobre Regeneración Estática Incremental.
El estado de caché de una página que utiliza ISR puede determinarse leyendo el valor del encabezado de respuesta x-nextjs-cache
. Los valores posibles son los siguientes:
MISS
- la ruta no está en la caché (ocurre como máximo una vez, en la primera visita)STALE
- la ruta está en la caché pero excedió el tiempo de revalidación, por lo que se actualizará en segundo planoHIT
- la ruta está en la caché y no ha excedido el tiempo de revalidación
notFound
El booleano notFound
permite que la página devuelva un estado 404
y una Página 404. Con notFound: true
, la página devolverá un 404
incluso si hubo una página generada exitosamente antes. Esto está diseñado para admitir casos de uso como contenido generado por usuarios que es eliminado por su autor. Nota: notFound
sigue el mismo comportamiento de revalidate
descrito aquí.
Nota importante:
notFound
no es necesario para el modofallback: false
ya que solo las rutas devueltas porgetStaticPaths
se generarán previamente.
redirect
El objeto redirect
permite redirigir a recursos internos o externos. Debe coincidir con la forma { destination: string, permanent: boolean }
.
En algunos casos raros, es posible que necesites asignar un código de estado personalizado para que los clientes HTTP
antiguos redirijan correctamente. En estos casos, puedes usar la propiedad statusCode
en lugar de la propiedad permanent
, pero no ambas. También puedes establecer basePath: false
similar a las redirecciones en next.config.js
.
Si las redirecciones son conocidas en tiempo de compilación, deben agregarse en next.config.js
en su lugar.
Lectura de archivos: Usa process.cwd()
Los archivos se pueden leer directamente del sistema de archivos en getStaticProps
.
Para hacer esto, debes obtener la ruta completa a un archivo.
Dado que Next.js compila tu código en un directorio separado, no puedes usar __dirname
ya que la ruta que devuelve será diferente del Enrutador de Páginas.
En su lugar, puedes usar process.cwd()
que te da el directorio donde se está ejecutando Next.js.
Historial de versiones
Versión | Cambios |
---|---|
v13.4.0 | App Router ahora es estable con una obtención de datos simplificada |
v12.2.0 | Regeneración Estática Incremental bajo demanda es estable. |
v12.1.0 | Se agregó Regeneración Estática Incremental bajo demanda (beta). |
v10.0.0 | Se agregaron las opciones locale , locales , defaultLocale y notFound . |
v10.0.0 | Se agregó la opción de retorno fallback: 'blocking' . |
v9.5.0 | Estable Regeneración Estática Incremental |
v9.3.0 | Se introdujo getStaticProps . |