Asekron Bileşenler
Coddy'nin React Journey'sinin Next.js Temel Esasları bölümünün bir parçası — ders 23 / 47.
İşte son bölümün hazırladığı her şeyin karşılığı. Bir server bileşeni async olabilir:
import { getDishes } from '../lib/data';
export default async function Page() {
const dishes = await getDishes();
return <h1>{dishes.length} dishes</h1>;
}Bunu tekrar okuyun, çünkü bu gerçekten yeni. Bileşen bekler. Next.js bunu sunucuda çalıştırır, await işleminin tamamlanmasına izin verir ve ancak o zaman sonucu HTML'e dönüştürür.
Bunun yerine yazacağınız yalnızca tarayıcıya özel sürümle karşılaştırın:
- Sayfa ilk olarak boş şekilde işlenir
- Sayfa yüklendikten sonra bir istek gönderilir
- Bazı durumlar değişir ve içerik görünür; bu, kullanıcının her seferinde gördüğü bir yanıp sönmedir (flicker)
Async bir server component ile ilk boş render gerçekleşmez. Titreyerek dönüşecek hiçbir şey yoktur, çünkü HTML oluşturulduğunda data zaten oradaydı. useEffect yok, yükleme bayrağı yok, ikinci bir istek yok.
İki kural bunu geçerli kılar:
- Yalnızca server bileşenleri
asyncolabilir:'use client'olarak işaretlenmiş bir bileşen olamaz - Verilerin sunucunun erişebileceği bir yerden gelmesi gerekir: bir database, bir file veya
lib/data.jsgibi bir modül
Görev
Kolaylib/data.js dosyası sağlanmış ve kilitlenmiştir. Bu dosya, bir { id, name } nesneleri dizisi için bir promise döndüren getDishes() fonksiyonunu dışa aktarır.
app/page.jsxiçindekiPagebileşenini birasyncfonksiyon yapın.getDishes()fonksiyonunuawaitkullanarak birdishesdeğişkenine atayın.<ul id="dish-list">içinde, her bir dish içinkey={dish.id},id={dish.id}ve metin içeriği olarak dish'innamebilgisini içeren birer<li>render edin.
useEffect yok, yükleme durumu (loading flag) yok, yalnızca await kullanın.
Kendin dene
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Next.js Temel Esasları bölümündeki tüm dersler
2Yönlendirme ve Bağlantılar
Klasörler Yoldurİç İçe YollarSayfaları BağlamaDinamik YollarBulunamadı SayfalarıÖzet: Yönlendirme5Sunucudaki Veri
Asekron BileşenlerRota Parametrelerini BeklemeAynı Anda İki Veri ÇekmeYüklenme DurumlarıHataları YönetmeÖzet: Veri Çekme