getInitialProps
Важно знать:
getInitialProps— это устаревший API. Мы рекомендуем использоватьgetStaticPropsилиgetServerSidePropsвместо него.
getInitialProps — это async функция, которую можно добавить к экспортируемому по умолчанию компоненту React для страницы. Она будет выполняться как на стороне сервера, так и снова на стороне клиента во время переходов между страницами. Результат работы функции будет передан компоненту React как 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
}Важно знать:
- Данные, возвращаемые из
getInitialProps, сериализуются при рендеринге на сервере. Убедитесь, что возвращаемый объект изgetInitialProps— это простойObject, а неDate,MapилиSet.- Для первоначальной загрузки страницы
getInitialPropsвыполнится только на сервере.getInitialPropsтакже выполнится на клиенте при переходе на другой маршрут с помощью компонентаnext/linkили с использованиемnext/router.- Если
getInitialPropsиспользуется в пользовательском_app.js, и страница, на которую происходит переход, используетgetServerSideProps, тогдаgetInitialPropsтакже выполнится на сервере.
Объект контекста
getInitialProps получает один аргумент, называемый context, который является объектом со следующими свойствами:
| Имя | Описание |
|---|---|
pathname |
Текущий маршрут, путь страницы в /pages |
query |
Строка запроса URL, разобранная как объект |
asPath |
String фактического пути (включая запрос), отображаемого в браузере |
req |
Объект HTTP-запроса (только сервер) |
res |
Объект HTTP-ответа (только сервер) |
err |
Объект ошибки, если при рендеринге произошла ошибка |
Ограничения
-
getInitialPropsможет использоваться только вpages/файлах верхнего уровня, а не в вложенных компонентах. Для вложенного получения данных на уровне компонента рассмотрите использование Маршрутизатора приложения. - Независимо от того, является ли ваш маршрут статическим или динамическим, любые данные, возвращаемые из
getInitialPropsкакprops, будут доступны на стороне клиента в начальном HTML. Это позволяет странице корректно гидратироваться. Убедитесь, что вы не передаёте никакую конфиденциальную информацию, которая не должна быть доступна на клиенте, вprops.
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/pages/api-reference/functions/get-initial-props