getInitialProps
Es bueno saberlo:
getInitialPropses una API heredada. Recomendamos usargetStaticPropsogetServerSidePropsen su lugar.
getInitialProps es una función async que se puede agregar al componente React exportado por defecto de una página. Se ejecutará tanto en el lado del servidor como nuevamente en el lado del cliente durante las transiciones de página. El resultado de la función se pasará al componente React como props.
import { NextPageContext } from 'next'
Page.getInitialProps = async (ctx: NextPageContext) => {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return { stars: json.stargazers_count }
}
export default function Page({ stars }: { stars: number }) {
return stars
}Page.getInitialProps = async (ctx) => {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return { stars: json.stargazers_count }
}
export default function Page({ stars }) {
return stars
}Es bueno saberlo:
- Los datos devueltos por
getInitialPropsse serializan al renderizar en el servidor. Asegúrate de que el objeto devuelto porgetInitialPropssea unObjectsimple, y no usesDate,MapoSet.- Para la carga inicial de la página,
getInitialPropssolo se ejecutará en el servidor.getInitialPropstambién se ejecutará en el cliente al navegar a una ruta diferente con el componentenext/linko usandonext/router.- Si se usa
getInitialPropsen un_app.jspersonalizado y la página a la que se navega usagetServerSideProps, entoncesgetInitialPropstambién se ejecutará en el servidor.
Objeto Contexto
getInitialProps recibe un único argumento llamado context, que es un objeto con las siguientes propiedades:
| Nombre | Descripción |
|---|---|
pathname | Ruta actual, el path de la página en /pages |
query | Cadena de consulta de la URL, analizada como un objeto |
asPath | String del path real (incluyendo la consulta) mostrado en el navegador |
req | Objeto de solicitud HTTP (solo servidor) |
res | Objeto de respuesta HTTP (solo servidor) |
err | Objeto de error si se encuentra algún error durante el renderizado |
Consideraciones
getInitialPropssolo se puede usar en archivos de nivel superior enpages/, y no en componentes anidados. Para obtener datos anidados a nivel de componente, considera explorar el App Router.- Independientemente de si tu ruta es estática o dinámica, cualquier dato devuelto por
getInitialPropscomopropspodrá examinarse en el lado del cliente en el HTML inicial. Esto es para permitir que la página se hidrate correctamente. Asegúrate de no pasar ninguna información sensible que no deba estar disponible en el cliente a través deprops.