0Pricing
React Academy · Ders

React 18 Akışı: renderToPipeableStream Nasıl Çalışır

Tüm eşzamansız veriler çözülmeden önce renderToPipeableStream'in HTML parçalarını aşamalı olarak nasıl gönderdiğini anlayın.

React 18 Akışı: renderToPipeableStream Nasıl Çalışır, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

React 18'den Önce: Eşzamanlı Darboğaz

React 18'den önce sunucu tarafında işleme, eşzamanlı çalışan renderToString yöntemini kullanıyordu: React, tarayıcıya herhangi bir HTML göndermeden önce bileşen ağacının tamamını bir dize olarak işler. Herhangi bir bileşen veri yüklüyorsa sunucu, ilk bayt kullanıcıya ulaşmadan önce tüm verileri beklemek zorundadır.

React 18: renderToPipeableStream

React 18, bileşen ağacını HTML parçalarından oluşan bir akış olarak işleyen renderToPipeableStream yöntemini kullanıma sundu. Her şeyin hazır olmasını beklemek yerine React, ağacın her bölümünü tamamladıkça HTML gönderir ve tarayıcının görünür içeriği hemen işlemeye başlamasını sağlar.

Anatomisi: pipe ve abort

renderToPipeableStream iki yöntem içeren bir nesne döndürür: pipe(writable) ve abort(). pipe, bir Node.js Writable akışını (genellikle HTTP yanıtını) kabul eder ve bu akışa HTML göndermeye başlar. abort(), istek iptal edildiğinde veya bir zaman aşımı aşıldığında kullanılan akışı iptal eder.

İlk Gelenler: HTML Kabuğu

Akış, bekleyen bir Suspense sınırı tarafından engellenmeyen tüm içerik olan HTML kabuğuyla başlar. Buna belge başı, gezinme, alt bilgi, yerleşim çerçevesi ve eşzamanlı olarak kullanılabilen tüm içerikler dahildir. Kabuk, veriye bağlı bileşenler çözümlenmeden önce hemen akışa gönderilir.

Akışta Suspense Yedekleri

Veri bekleyen Suspense sınırlarının içindeki bileşenler başlangıçta yedek kullanıcı arayüzleri olarak (örneğin bir yükleme göstergesi) akışa gönderilir. React daha sonra yedeği çözümlenmiş içerikle değiştiren bir script etiketi gönderir — tüm bunlar kabuk istemci tarafında yeniden işlenmeden gerçekleşir.

İstemci Hidrasyonu için bootstrapScripts

Akışın sonunda bir script etiketi eklemesini söylemek için renderToPipeableStream yöntemine bootstrapScripts: ['/static/js/client.js'] aktarın. Tarayıcı bu paketi yükler ve hydrateRoot çağrısını yaparak React'in olay işleyicilerini sunucuda işlenmiş DOM'a bağlar.

onShellReady: pipe İçin Doğru An

onShellReady, HTML kabuğu (bekleyen Suspense sınırlarının dışındaki her şey) gönderilmeye hazır olduğunda tetiklenir. pipe(res) çağrısını yapmak için doğru an budur — ancak akış HTTP durumunu sabitlediğinden, pipe çağrısından önce HTTP durum kodunu ve yanıt üst bilgilerini ayarlamanız önemlidir.

Akıştan Önce Üst Bilgileri Ayarlama

Akış, pipe() çağrıldığında hemen başladığından, res.setHeader veya res.statusCode atamalarının pipe çağrısından önce yapılması gerekir. Yaygın bir yaklaşım, onShellReady geri çağırmasında durum kodunu 200 ve Content-Type değerini text/html olarak ayarlayıp hemen ardından pipe(res) çağrısını yapmaktır.

onShellError: Kabuktan Önce Oluşan Kritik Hatalar

onShellError, kabuğun oluşturulması tamamlanmadan önce kurtarılamaz bir hata oluştuğunda tetiklenir — örneğin, en üst düzey bir bileşen herhangi bir Suspense sınırının dışında hata fırlattığında. Bu durumda kısmi bir yanıtı akışa gönderemezsiniz; bunun yerine bir hata sayfasına yönlendirin veya statik bir hata HTML belgesi gönderin.

onAllReady: Botlar ve Tarayıcılar İçin

onAllReady, tüm Suspense sınırları da dâhil olmak üzere React ağacının tamamı çözümlendiğinde tetiklenir. Arama motoru tarayıcıları ve sosyal medya bağlantı önizleme araçları için akış kullanmadan eksiksiz HTML göndermek istersiniz. İsteğin bir bottan gelip gelmediğini kontrol edin ve onShellReady yerine onAllReady içinde pipe(res) çağrısını yapın.

Akış Sırasında Hatalardan Kurtarma

onError, Suspense sınırlarındaki hatalar için tetiklenir — React, bu sınır hata arayüzüne geri dönerken sayfanın geri kalanını akışa göndermeye devam edebilir. Kullanıcı için akışı durdurmadan hatayı gözlemlenebilirlik işlem hattınıza günlüğe kaydetmek için onError kullanın.

onAllReady ve onShellReady Karşılaştırması

Akışı başlatmak için onShellReady yerine onAllReady ne zaman kullanılmalıdır?

Ders Özeti

renderToPipeableStream, Node.js sunucuları için React 18'in akışlı SSR temel aracıdır. HTML kabuğunu onShellReady aracılığıyla hemen akışa gönderir, veriler çözümlendikçe Suspense sınırlarını doldurur ve bootstrapScripts aracılığıyla istemciyi hidratlar. Botlar ve tarayıcılar için onAllReady, kritik hatalar için onShellError kullanın ve pipe() çağrısından önce HTTP üst bilgilerini her zaman ayarlayın.

Sıkça Sorulan Sorular

“React 18 Akışı: renderToPipeableStream Nasıl Çalışır” dersi ücretsiz mi?

Evet — “React 18 Akışı: renderToPipeableStream Nasıl Çalışır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“React 18 Akışı: renderToPipeableStream Nasıl Çalışır” dersinde ne öğreneceğim?

Tüm eşzamansız veriler çözülmeden önce renderToPipeableStream'in HTML parçalarını aşamalı olarak nasıl gönderdiğini anlayın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“React 18 Akışı: renderToPipeableStream Nasıl Çalışır” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. React 18 Akışı: renderToPipeableStream Nasıl Çalışır
  2. Suspense Sınırları ve Akış Önceliği
  3. Seçici Hidrasyonla Aşamalı Hidrasyon
  4. Akış Etkisini Ölçme: FCP, TTI ve LCP
← React Academy Sayfasına Dön