Veri Getirme
Bu doküman Next.js'nin 9.3 versiyonu veya üstü için yazılmıştır. Eğer daha eski versiyon kullanıyorsanız Önceki Dokümantasyonumuza bakmalısınız.
Sayfalar başlığında Next.js'nin pre-render için iki biçimi olduğunu açıkladık: Static Generation ve Server-side Rendering. Bu başlıkta, her durum için veri toplama stratejileri hakkında derinlemesine konuşacağız. Henüz okumadıylsanız Sayfalar başlığını okumanızı öneririz.
Pre-render için veri almakta kullanabileceğiniz üç benzersiz Next.js fonksiyonundan bahsedeceğiz:
getStaticProps(Static Generation): Veri build yapılırken getirilir.getStaticPaths(Static Generation): Verilere dayalı olarak sayfaları pre-render etmek üzere özel dinamik yollar (dynamic routes) belirtilir.getServerSideProps(Server-side Rendering): Veri her request'te yenilenir.
Ek olarak, client-side'de verilerin nasıl getirileceğinden (fetch edileceğinden) kısaca bahsedeceğiz.
getStaticProps (Static Generation)
getStaticProps (Static Generation)Versiyon Geçmişi
v10.0.0:
locale,locales,defaultLocalevenotFoundseçenekleri eklendi.v9.5.0: Kararlı Incremental Static Regeneration
v9.3.0:
getStaticPropstanıtıldı.
Bir sayfadan getStaticProps adlı async bir fonksiyon export ederseniz, Next.js getStaticProps tarafından döndürülen öğeleri kullanarak build zamanında bu sayfayı pre-render eder.
export async function getStaticProps(context) {
return {
props: {}, // sayfa component'ine props olarak geçecek veriler
}
}Buradaki context parametresi şu anahtar değerleri içeren bir objedir:
paramsdinamik routing için route parametrelerini içerir. Mesela eğer sayfa adı[id].jsiseparamsdeğeri{ id: ... }şeklinde görünecektir. Daha fazlasını öğrenmek için Dynamic Routing dokümantasyonuna bakabilirsiniz. Bunu daha sonra anlatacağımızgetStaticPathsile birlikte kullanmalısınız.previewdeğeri, eğer sayfa preview modundaysatrueolur. Aksi haldeundefined'dir.previewDatadeğeri,setPreviewDatatarafından ayarlanan önizleme verilerini içerir.locale, aktif local ayarları içerir (etkinleştirilmişse)locales, desteklenen tüm local ayarları içerir (etkinleştirilmişse)defaultLocale, varsayılan local ayarları gösterir (etkinleştirilmişse)
getStaticProps şu değerleri içeren bir obje return etmelidir:
props- Sayfa component'i tarafından alınacak değerlere sahip, isteğe bağlı bir nesnedir. Bu nesne serializable olmalıdır.revalidate- Sayfanın yeniden oluşturulabilmesi için saniye cinsinden isteğe bağlı bir miktar (varsayılan olarakfalseveya yeniden doğrulama yok). Daha fazlası için: Incremental Static RegenerationnotFound- Sayfanın 404 durumu ve sayfası döndürmesine izin vermek için isteğe bağlı birbooleandeğerdir. Aşağıda nasıl çalıştığına dair bir örnek verilmiştir:Not: Bu örnekte
notFound'unfallback: false'ye ihtiyacı yoktur çünkü sadecegetStaticPaths'ten dönen yollar pre-render edilecektir çünkü diğerlerinin pre-render edilmesinin yoluifbloğunda engellenmiştir.Not:
notFound: trueile, sayfa başarıyla oluşturulmuş olsa bile 404 döndürecektir. Bu, kullanıcı tarafından oluşturulan oluşturulan içeriğin yazar tarafından kaldırılması gibi kullanımları desteklemek içindir.redirect- Dahili veya harici kaynaklara yönlendirmeye izin vermek için isteğe bağlı{ destination: string, permanent: boolean }biçiminde bir değerdir. Bazı ender durumlarda, eski HTTP istemcilerinin doğru şekilde yeniden yönlendirme yapması için özel bir durum kodu atamanız gerekebilir. Bu durumlardapermanentproperty'i yerinestatusCodeproperty'i özelliğini kullanabilirsiniz (ama ikisini aynı anda kullanamazsınız). Aşağıda nasıl çalıştığına dair bir örnek verilmiştir:Not: Şu anda build sırasında redirect'e izin verilmemektedir ve yönlendirmeler build anında biliniyorsa
next.config.js'ye eklenmelidir.
Not:
getStaticPropsiçinde üst seviyemodule'leriimportedip kullanabilirsiniz.Yani, sunucu taraflı kodu doğrudan
getStaticProps'ta kullanabilirsiniz. Mesela dosya sisteminizden veya veritabanından okuma gibi işlemleri burada yapabilirsiniz.
getStaticProps'ta kullanılanimport'lar client-side için bundle edilmeyecektir (paketlenmeyecektir).
Not:
getStaticPropsiçinde bir API yoluna erişmek içinfetch()kullanmamalısınız. Bunun yerine API rotanızda kullandığınız mantığı doğrudanimportedin. Bu yaklaşım için kodunuzu biraz yeniden düzenlemeniz gerekebilir.Harici bir API'den veri almak sorun değil!
Basit Bir Örnek
Burada bir CMS'den blog post'ları listesini alan bir getStaticProps örneği yaptık. Bu örnek aynı zamanda Sayfalar başlığında da bulunmaktadır.
Ne zaman getStaticProps Kullanmalıyız?
getStaticProps Kullanmalıyız?Eğer şunları yapacaksanız getStaticProps kullanmalısınız:
Sayfa oluşturmak için gereken veriler, kullanıcının request'inden önce (build sırasında) zaten elimizdeyse,
Veriler bir içerik yönetim sisteminden geliyorsa,
Veriler herkese açık olarak önbelleğe alınabilirse (kullanıcıya özel değilse),
Sayfa SEO için önceden oluşturulmalıysa ve çok hızlı olmalıysa.
Incremental Static Regeneration (ISR) (Artımlı Statik Yenileme)
Versiyon Geçmişi
v9.5.0: Base Path eklendi.
Next.js, sitenizi oluşturduktan sonra statik sayfalar oluşturmanıza veya güncellemenize olanak tanır. ISR, tüm siteyi yeniden oluşturmaya gerek kalmadan sayfa başına statik oluşturmayı kullanmanızı sağlar. ISR ile, milyonlarca sayfaya ölçeklendirme yaparken statik sayfaya sahip olmanın avantajlarını da korursunuz.
Önceki getStaticProps örneğini düşünün, ama revalidate property'i aracılığıyla ISR etkinleştirilmiş olsun:
Build ile pre-render edilmiş bir sayfa istek yapıldığında başlangıçta önbelleğe alınmış sayfayı gösterecektir.
ilk istekten sonra ve maksimum 10 saniyeden önce sayfaya yapılan tüm istekler de önbelleğe alınır.
10 sn'lik döngüden sonra bir sonraki istek halen önbelleğe alınmış (eski) sayfayı göndermeye devam edecektir.
Next.js arka planda sayfanın yenilenmesini tetikler.
Sayfa başarıyla oluşturulduktan sonra Next.js önbelleği geçersiz kılar ve güncellenmiş ürün sayfasını gösterir. Arka plandaki yenileme başarısız olursa eski sayfa değişmeden kalır.
Oluşturulmamış bir yola istek yapıldığında Next.js, ilk istekte sayfayı sunucu tarafında oluşturur. Sonraki istekler statik dosyayı önbellekten sunacaktır.
Önbelleğin global olarak nasıl kalıcı hale getirileceğini ve geri almaların nasıl yönetileceğini öğrenmek için ISR hakkında daha fazla bilgi edinin.
Reading files: Use process.cwd()
process.cwd()Dosyalar doğrudan getStaticProps içindeki dosya sisteminden okunabilir.
Bunu yapmak için dosyanın tam yolunu almanız gerekir.
Next.js kodunuzu ayrı bir klasöre derlediğinden __dirname'yi kullanamazsınız. Çünkü bunun döneceği yol, pages dizininden farklı olacaktır.
Bunun yerine size Next.js'nin çalıştırıldığı dizini veren process.cwd()'yi kullanabilirsiniz.
Teknik Detaylar
Sadece build sırasında çalışır
getStaticProps build sırasında çalıştığından, statik HTML oluşturduğu için query parametreleri ya da HTTP header'ları gibi sadece istek sırasında oluşturulabilen verileri almaz.
Direkt server-side kodu yazın
getStaticProps yalnızca sunucu tarafında çalışır. Asla istemci tarafında çalıştırılmayacaktır. Tarayıcı için JS paketine bile dahil edilmeyecektir. Bu, tarayıcılara gönderilmeden doğrudan veritabanı sorguları gibi kodlar yazabileceğiniz anlamına geliyor. getStaticProps'tan bir API yolu almamalısınız. Bunun yerine sunucu tarafı kodunu doğrudan getStaticProps'a yazabilirsiniz.
Next.js'nin istemci tarafı paketinden neleri çıkardığını doğrulamak için bu aracı kullanabilirsiniz.
Hem HTML'yi hem JSON'u statik olarak üretir
getStaticProps içeren bir sayfa build sırasında pre-render edilerek oluşturulduğunda, sayfanın HTML dosyasına ek olarak Next.js, getStaticProps çalıştırmanın sonucunu tutan bir JSON dosyası oluşturur.
Bu JSON dosyası, next/link (dokümantasyon) veya next/router (dokümantasyon) üzerinden istemci taraflı sayfa yönlendirmelerinde kullanılacaktır. getStaticProps kullanarak pre-render edilmiş bir sayfaya gittiğinizde Next.js bu JSON dosyasını (build sırasında önceden hesaplanır) alır ve bunu sayfa component'i için props olarak kullanılır. Yani yalnızca bu dışa aktarılan JSON dosyası kullanıldığı için getStaticProps fonksiyonu isteklere cevap vermek için çağırılmamaktadır.
Incremental Static Generation (ISR) kullanırken istemci tarafında navigasyon için gereken JSON'u oluşturmak için getStaticProps bant dışında çalıştırılır. Bunu, aynı sayfa için bir sürü istek yapılıyor diye düşünebilirsiniz. Ama bunun son kullanıcın gördüğü performans üzerine etkisi yoktur. (Çünkü zaten son kullanıcı tüm navigasyonu önbelleğe alınmış içerikler üzerinde gerçekleştirmektedir. )
Sadece sayfalarda kullanılır
getStaticProps sadece bir sayfaden export edilebilir. Sayfa olmayan bir dosyadan import edemezsiniz.
Bu kısıtlamanın nedenlerinden biri, React'ın sayfa oluşturulmadan önce gerekli tüm verilere sahip olması gerekliliğidir.
Ayrıca export async function getStaticProps() {} kullanmalısınız. Yani özellikle sayfa bileşeninden bağımsız bir fonksiyon olarak export etmelisiniz. Sayfanın bir property'i olarak (propTypes'ı ekler gibi) oluşturmaya çalışırsanız çalışmaz.
Development modundayken her request'te çalışır.
next dev ile çalıştırdığınız development modundayken getStaticProps her request'te çalışacaktır.
Önizleme Modu
Bazı durumlarda, Staic Generation'u geçici olarak atlamak ve sayfayı build sırasında değil de request sırasında oluşturmak isteyebilirsiniz. Örneğin bir CMS kullanıyor olabilirsiniz ve taslağınızı yayınlamadan önce önizlemek isteyebilirsiniz.
Bu kullanım durumu Next.js tarafından Preview Mode adı verilen özellik olarak desteklenir. Önizleme modu hakkında daha fazla bilgi için Preview Mode dokümantasyonunu inceleyin.
getStaticPaths (Static Generation)
getStaticPaths (Static Generation)Versiyon Geçmişi
v9.5.0: Kararlı Incremental Static Regeneration
v9.3.0:
getStaticPathstanıtıldı.
Bir sayfanın dinamik yolları (dokümantasyon) varsa ve getStaticProps kullanılıyorsa, oluşturma sırasında HTML'ye dönüştürülmesi gereken yolların bir listesini tanımlaması gerekir.
Dinamik yollar kullanan bir sayfadan getStaticPaths adlı bir async fonksiyonu export ederseniz Next.js getStaticPaths tarafından belirtilen tüm yolları statik olarak pre-render edecektir.
paths key (zorunlu)
paths key (zorunlu)paths hangi yolların pre-render edileceğini belirler. Örneğin pages/posts/[id].js adında dinamik yollar kullanan bir sayfanız olduğunu varsayalım. Bu sayfadan getStaticPaths'ı export ederseniz ve paths için aşağıdakileri döndürürseniz:
Next.js paths/1 ve paths/2 için statik sayfalar üretir.
params ile gönderilen her bir key'in sayfa adıyla eşleşmesi gerektiğini unutmayın:
Eğer sayfa adı
pages/posts/[postId]/[commentId]iseparams'ınpostIdvecommentIdkey'lerini içermesi gerekir.Eğer sayfa adı örneğin
pages/[...slug]gibi tüm yolları yakalamaya çalışıyorsaparamsdeğerislugkey'ini dizi olarak içermelidir. Örneğin bu dizi['foo','bar']ise Next.js/foo/baryolu için statik sayfa üretecektir.Eğer sayfa isteğe bağlı olarak tüm yolları yakalama yapmaya çalışıyorsa en kök yolu sağlamak için
null,[],undefinedveyafalsedeğerini sağlayın. Örneğinpages/[[...slug]]içinslug: falsederseniz Next.js/yolu için statik sayfa üretecektir.
fallback key (zorunlu)
fallback key (zorunlu)getStaticPaths fonksiyonu boolean türünden fallback key'i içeren bir obje return etmelidir. (ing:fallback, tr:yedek)
fallback: false
Eğer fallback: false ise getStaticPaths tarafından return edilmeyen tüm yollar 404'e çıkar. Bunu, pre-render edeceğiniz yolların sayısı azsa yapabilirsiniz. Böylece tüm yollar build sırasında statik olarak oluşturulur. Projeye sık sık yeni sayfalar eklenmediği durumlarda kullanışlıdır. Veri kaynağına daha fazla öğe eklerseniz ve yeni sayfalar oluşturmanız gerekiyorsa yeniden build etmeniz gerekir.
Aşağıda, pages/posts/[id].js ile sayfa başına blog post'larını pre-render eden bir örnek verilmiştir. Blog gönderilerinin listesi bir CMS'den alınıp getStaticPaths tarafından return edilmektedir. Ardından, her sayfa için post'ları getStaticProps kullanarak CMS'den alır. Bu örnek aynı zamanda Sayfalar başlığında da bulunmaktadır.
fallback: true
Eğer fallback: true ise getStaticPaths'ın davranışı değişir:
getStaticPaths'tan döndürülen yollar, build sırasındagetStaticPropstarafından HTML'ye dönüştürülecektir.Build sırasında oluşturulmayan yollar 404 sayfasıyla sonuçlanmayacaktır. Bunun yerine Next.js böyle bir yola yönelik ilk istekte sayfanın "fallback" bir sürümünü sunar. Ayrıntılı bilgi için aşağıdaki "Fallback pages"e bakın.
Arka planda Next.js, istenen HTML ve JSON yolunu statik olarak oluşturur. (Bu, arka planda
getStaticPropsu çalıştırmayı da içerir)Bu yapıldığında, tarayıcı oluşturulan yol için JSON'u alır. Kullanıcının bakış açısından, fallback (yedek) sayfa, yeni oluşturulan sayfa ile değiştirilir.
Aynı amanda Next.js bu yolu pre-render edilmiş sayfalar listesine ekler. Aynı yola yapılan sonraki istekler, build sırasında pre-render edilen diğer sayfalar gibi olacaktır.
fallback: true,next exportkullanımını desteklemez.
Fallback Pages
Bir safyanın "fallback" halinde:
Sayfanın props değeri boş olacaktır.
router'i kullanarak sayfanın fallback olup olmadığını anlayabilirsiniz.
router.isFallbackdeğeritrueolacaktır.
isFallback kullanımıyla ilgili bir örnek:
fallback: true ne zaman kullanışlıdır?
fallback: true, uygulamanızın verilere bağlı çok sayıda statik sayfası varsa (mesela bir e-ticaret sitesi) kullanışlıdır.
Tüm ürün sayfalarını pre-render etmek istiyorsunuz ama bu sayfaların gelecekte de (sonsuza kadar) yeniden pre-render edilmesi de gerekiyordur. Bunun yerine, statik olarak küçük bir alt sayfa kümesi oluşturulabilir ve geri kalanı için fallback: true kullanabilirsiniz. Bir kullanıcı henüz oluşturulmamış bir sayfa istediğinde, kullanıcıya loading ekranı gösterilecektir. Kısa bir süre sonra da getStaticProps çalışmayı bitirip sayfayı istenen verilere göre oluşturur. Böylece artık isteyen herkes bu sayfaya da erişebilir hale gelecektir.
Bu hem kullanıcıların hız deneyimini kesintiye uğratmamış olur hem de static generation'un faydalarını kullanmış oluruz.
fallback: true, zaten oluşturulmuş olan sayfaları güncellemez. Bununla ilgili Incremental Static Regeneration konusunu inceleyin.
fallback: 'blocking'
Kısaca, fallback: true gibi çalışır. Fark şu ki; henüz oluşturulmamış bir yola istek geldiği zaman bir "fallback" sayfası göstermek yerine getStaticProps'un sayfayı oluşturmasını bekler. Yani SSR gibi çalışır. getStaticProps işini tamamladığı zaman kullanıcıya bu yeni sayfa gönderilir. Bu arada bu yol için de artık bir statik sayfa oluşturmuştur. Sonraki isteklerde yine getStaticProps çalışmaz, sayfalar önbellekten sunulur.
fallback: 'blocking', oluşturulan sayfaları varsayılan olarak güncellemeyecektir. Oluşturulan sayfaları güncellemek için fallback: 'blocking' ile birlikte ISR de kullanın.
next exportkullanırsanızfallback: 'blocking'desteklemez.
Teknik detaylar
getStaticProps ile birlikte kullanın
Dinamik rota parametreleri olan bir sayfda getStaticProps kullandığınızda getStaticPaths de kullanmak zorundasınız.
getStaticPaths, getServerSideProps birlikte kullanılamaz.
Sadece server-side olarak build sırasında çalışır
getStaticPaths sadece server-side olarak build sırasında çalışır.
Sadece sayfalarda kullanılır
getStaticPaths sadece sayfadan export edilmelidir. Sayfa olmayan dosyalardan export edemezsiniz.
Ayrıca export async function getStaticPaths() {} kullanmalısınız. Yani özellikle sayfa bileşeninden bağımsız bir fonksiyon olarak export etmelisiniz. Sayfanın bir property'i olarak (propTypes'ı ekler gibi) oluşturmaya çalışırsanız çalışmaz.
getServerSideProps (Server-side Rendering)
getServerSideProps (Server-side Rendering)Versiyon Geçmişi
v10.0.0:
locale,locales,defaultLocalevenotFoundseçenekleri eklendi.v9.3.0:
getServerSidePropstanıtıldı.
Bir sayfadan getStaticProps adlı async bir fonksiyon export ederseniz, Next.js getServerSideProps tarafından döndürülen öğeleri kullanarak her istekte sayfayı pre-render eder.
Buradaki context parametresi şu anahtar değerleri içeren bir objedir:
paramsdinamik routing için route parametrelerini içerir. Mesela eğer sayfa adı[id].jsiseparamsdeğeri{ id: ... }şeklinde görünecektir. Daha fazlasını öğrenmek için Dynamic Routing dokümantasyonuna bakabilirsiniz. Bunu daha sonra anlatacağımızgetStaticPathsile birlikte kullanmalısınız.resHTTP response objesi.queryquery string'i temsil eden bir obje.previewdeğeri, eğer sayfa preview modundaysatrueolur. Aksi haldeundefined'dir.previewDatadeğeri,setPreviewDatatarafından ayarlanan önizleme verilerini içerir.resolveUrlistemci geçişleri için_next/dataönekini çıkaran ve orijinal query değerlerini içeren istek URL'sinin normalleştirilmiş hali.locale, aktif local ayarları içerir (etkinleştirilmişse)locales, desteklenen tüm local ayarları içerir (etkinleştirilmişse)defaultLocale, varsayılan local ayarları gösterir (etkinleştirilmişse)
getServerSideProps şu değerleri içeren bir obje return etmelidir:
props- Sayfa component'i tarafından alınacak değerlere sahip, isteğe bağlı bir nesnedir. Bu nesne serializable olmalıdır.revalidate- Sayfanın yeniden oluşturulabilmesi için saniye cinsinden isteğe bağlı bir miktar (varsayılan olarakfalseveya yeniden doğrulama yok). Daha fazlası için: Incremental Static RegenerationnotFound- Sayfanın 404 durumu ve sayfası döndürmesine izin vermek için isteğe bağlı birbooleandeğerdir. Aşağıda nasıl çalıştığına dair bir örnek verilmiştir:Not: Bu örnekte
notFound'unfallback: false'ye ihtiyacı yoktur çünkü sadecegetStaticPaths'ten dönen yollar pre-render edilecektir çünkü diğerlerinin pre-render edilmesinin yoluifbloğunda engellenmiştir.Not:
notFound: trueile, sayfa başarıyla oluşturulmuş olsa bile 404 döndürecektir. Bu, kullanıcı tarafından oluşturulan oluşturulan içeriğin yazar tarafından kaldırılması gibi kullanımları desteklemek içindir.redirect- Dahili veya harici kaynaklara yönlendirmeye izin vermek için isteğe bağlı{ destination: string, permanent: boolean }biçiminde bir değerdir. Bazı ender durumlarda, eski HTTP istemcilerinin doğru şekilde yeniden yönlendirme yapması için özel bir durum kodu atamanız gerekebilir. Bu durumlardapermanentproperty'i yerinestatusCodeproperty'i özelliğini kullanabilirsiniz (ama ikisini aynı anda kullanamazsınız). Aşağıda nasıl çalıştığına dair bir örnek verilmiştir:Not: Şu anda build sırasında redirect'e izin verilmemektedir ve yönlendirmeler build anında biliniyorsa
next.config.js'ye eklenmelidir.
Not:
getStaticPropsiçinde üst seviyemodule'leriimportedip kullanabilirsiniz.Yani, sunucu taraflı kodu doğrudan
getStaticProps'ta kullanabilirsiniz. Mesela dosya sisteminizden veya veritabanından okuma gibi işlemleri burada yapabilirsiniz.
getStaticProps'ta kullanılanimport'lar client-side için bundle edilmeyecektir (paketlenmeyecektir).
Not:
getStaticPropsiçinde bir API yoluna erişmek içinfetch()kullanmamalısınız. Bunun yerine API rotanızda kullandığınız mantığı doğrudanimportedin. Bu yaklaşım için kodunuzu biraz yeniden düzenlemeniz gerekebilir.Harici bir API'den veri almak sorun değil!
Basit Bir Örnek
Burada bir CMS'den blog post'ları listesini alan bir getServersideProps örneği yaptık. Bu örnek aynı zamanda Pages dokümantasyonunda da bulunmaktadır.
Ne zaman getServerSideProps Kullanmalıyız?
getServerSideProps Kullanmalıyız?getServerSideProps'u yalnızca verileri istek yapıldığı zaman alınması gereken bir sayfayı pre-render etmeniz gerekiyorsa kullanmalısınız. İlk byte'ye kadar geçen süre (TTFB), sunucunun her istekte sonucu hesaplaması gerektiğinden ve sonuç extra yapılandırma olmadan bir CDN tarafından önbelleğe alınamayacağı için getStaticProps'tan daha yavaş olacaktır.
Eğer verileri önceden oluşturmanız gerekmiyorsa, verileri istemci tarafında getirmeyi düşünmelisiniz. Daha fazla bilgi için buraya tıklayın.
Teknik Detaylar
Sadece server-side çalışır
getServerSideProps sadece sunucu tarafında çalışır. Asla tarayıcıda çalışmaz. Eğer bir sayfa getServerSideProps kullanıyorsa:
Bu sayfaya bir istek yapıldığında
getServerSidePropsçalışırve sayfayı pre-render ederek props'larıyla döndürür.next/link(dokumantasyon) veyanext/router(dokumantasyon) aracılığıyla istemci taraflı sayfa geçişleri yaparken bu sayfayı talep ettiğinizde Next.js,getServerSidePropsçalıştıran sunucuya bir API isteği gönderir.getServerSidePropsçalışıp sonucu içeren bir JSON döndürür. Bu JSON sayfayı oluşturmak için kullanılır. Tüm bu işler Next.js tarafından otomatik olarak halledilecektir. YanigetServerSidePropstanımlı olduğu sürece ekstra bi'şey yapmanıza gerek kalmaz.
Hangi kodun istemci tarafında gönderildiğini test etmek için bu aracı kullanabilirsiniz.
Sadece sayfalarda kullanılır
getServerSideProps sadece sayfadan export edilir. Sayfa olmayan bir dosyadan export edemezsiniz.
Sayfa component'inin bir property'i gibi oluşturamazsınız. Sayfa component'inden bağımsız şekilde sayfa dosyasından export edilmelidir (export async function getServerSideProps() {}).
Fetching data on the client-side (İstemci tarafında data almak)
Sayfanız sık sık güncellenen veriler içeriyorsa ve verileri önceden oluşturmanız gerekmiyorsa, verileri istemci tarafında getirebilirsiniz. Bunun örneği, kullanıcıya özel verilerdir. Şu şekilde çalışır:
İlk olarak, sayfayı veri olmadan hemen gösterin. Sayfanın bölümleri Static Generation kullanarak pre-render edilebilir. Eksik veriler için de loading state'leri kullanırsınız.
Ardından, verileri istemci tarafında alın ve hazır olduğunda görüntüleyin.
Bu yaklaşım, örneğin, kullanıcı kontrol paneli sayfaları için iyi çalışır. Çünkü mesela dashboard kullanıcıya özel bir sayfa olduğundan SEO'yla ilgisi yoktur ve sayfanın önceden oluşturulmasına gerek yoktur. Veriler sık sık güncellenir. Bu da her istekte verinin alınmasını gerektirir.
SWR
Next.js'nin arkasındaki ekip, veri almak için SWR adında bir React Hook oluşturdu. İstemci tarafında veri alıyorsanız bunu kesinlikle öneririz. Önbelleğe alma, yeniden doğrulama, focus izleme, aralıklarla yeniden getirme ve daha fazlasını bu hook ile yönetebilirsiniz. Kullanımı şöyledir:
SWR dokümantasyonunu inceleyip daha fazlasını öğrenebilirsiniz.
Daha Fazlasını Öğrenin
Buradan sonra aşağıdakilerden biriyle devam etmenizi öneririz:
Last updated
Was this helpful?