getInitialProps
Bilmenizde fayda var:
getInitialProps
eski bir API'dir. Kullanmanızı öneririzgetStaticProps
veyagetServerSideProps
onun yerine.
getInitialProps
sayfa için varsayılan dışa aktarılan React bileşenine eklenebilen bir async
işlevidir. Sayfa geçişleri sırasında hem sunucu tarafında hem de istemci tarafında tekrar çalışacaktır. Fonksiyonun sonucu React bileşenine props
olarak iletilecektir.
pages/index.tsx
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
}
Bildiğim iyi oldu:
getInitialProps
adresinden döndürülen veriler sunucu tarafından işlenirken serileştirilir.getInitialProps
adresinden döndürülen nesnenin düz birObject
olduğundan veDate
,Map
veyaSet
kullanmadığından emin olun.- İlk sayfa yüklemesi için
getInitialProps
yalnızca sunucu üzerinde çalışacaktır.getInitialProps
daha sonra istemci üzerinde de çalışacaktır.next/link
bileşenini kullanarak veyanext/router
.getInitialProps
özel bir_app.js
içinde kullanılıyorsa ve gidilen sayfagetServerSideProps
kullanıyorsa,getInitialProps
da sunucu üzerinde çalışacaktır.
Context Object
getInitialProps
aşağıdaki özelliklere sahip bir nesne olan context
adlı tek bir argüman alır:
Name | Description |
---|---|
pathname | Current route, the path of the page in /pages |
query | Query string of the URL, parsed as an object |
asPath | String of the actual path (including the query) shown in the browser |
req | HTTP request object (server only) |
res | HTTP response object (server only) |
err | Error object if any error is encountered during the rendering |
Caveats
getInitialProps
yalnızcapages/
üst düzey dosyalarda kullanılabilir, iç içe geçmiş bileşenlerde kullanılamaz. Bileşen düzeyinde iç içe veri almak için App Router'ı keşfetmeyi düşünün.- Rotanızın statik veya dinamik olmasına bakılmaksızın,
getInitialProps
adresindenprops
olarak döndürülen tüm veriler ilk HTML'de istemci tarafında incelenebilecektir. Bu, sayfanın doğru şekilde hidratlanmasını sağlamak içindir. İstemcide bulunmaması gereken hassas bilgileriprops
içinde iletmediğinizden emin olun.