renderToString
renderToString bir React ağacını bir HTML string’ine dönüştürür.
const html = renderToString(reactNode, options?)Başvuru dokümanı
renderToString(reactNode, options?) 
Sunucuda, uygulamanızı HTML’e dönüştürmek için renderToString çağrısı yapınız.
import { renderToString } from 'react-dom/server';
const html = renderToString(<App />);İstemci üzerinde, sunucu tarafından oluşturulan HTML’i etkileşimli hale getirmek için hydrateRoot çağrısı yapınız.
Aşağıda daha fazla örnek görebilirsiniz.
Parametreler
- 
reactNode: HTML’e dönüştürmek istediğiniz bir React düğümü. Örneğin,<App />gibi bir JSX düğümü.
- 
isteğe bağlı options: Sunucu render’ı için bir nesne.- isteğe bağlı identifierPrefix: React’inuseIdile oluşturduğu ID’ler için kullandığı bir string öneki. Aynı sayfada birden fazla kök kullanıldığında çakışmaları önlemek için faydalıdır.hydrateRootfonksiyonuna geçirilen aynı önek olmalıdır.
 
- isteğe bağlı 
Dönüş değeri
Bir HTML string’i.
Uyarılar
- 
renderToStringsınırlı Suspense desteğine sahiptir. Bir bileşen askıya alınırsa,renderToStringgeri dönüşünü HTML olarak hemen gönderir.
- 
renderToStringtarayıcıda çalışır, ancak istemci kodunda kullanılması tavsiye edilmez.
Kullanım
Bir React ağacını HTML olarak bir string’e dönüştürme
Uygulamanızı sunucu yanıtınızla birlikte gönderebileceğiniz bir HTML string’ine dönüştürmek için renderToString öğesini çağırınız:
import { renderToString } from 'react-dom/server';
// Rota işleyici sözdizimi backend framework'ünüze bağlıdır
app.use('/', (request, response) => {
  const html = renderToString(<App />);
  response.send(html);
});Bu, React bileşenlerinizin etkileşimli olmayan ilk HTML çıktısını üretecektir. İstemcide, sunucu tarafından oluşturulan HTML’i hydrate etmek ve etkileşimli hale getirmek için hydrateRoot çağırmanız gerekecektir.
Alternatifler
renderToString’den sunucuda bir streaming render’a geçiş yapma 
renderToString, hemen bir string döndürdüğü için, içerik yüklenirken streaming yapmayı desteklemez.
Mümkün olduğunda, bu tam özellikli alternatifleri kullanmanızı öneririz:
- Eğer Node.js kullanıyorsanız, renderToPipeableStreamkullanınız.
- Deno veya Web Streams ile modern bir edge çalışma zamanı kullanıyorsanız,renderToReadableStream’i kullanabilirsiniz.
Sunucu ortamınız akışları desteklemiyorsa renderToString kullanmaya devam edebilirsiniz.
renderToString’den sunucuda statik önceden render’a geçiş yapma 
renderToString, hemen bir string döndürdüğü için, statik HTML oluşturmak için veri yüklenmesini beklemeyi desteklemez.
Bu tam özellikli alternatifleri kullanmanızı öneririz:
- Node.js kullanıyorsanız, prerenderToNodeStreamkullanın.
- Deno veya Web Streams destekleyen modern bir edge runtime kullanıyorsanız, prerenderkullanın.
Statik site oluşturma ortamınız stream’leri desteklemiyorsa, renderToString kullanmaya devam edebilirsiniz.
İstemci kodundan renderToString’i kaldırma 
Bazen, renderToString istemcide bazı bileşenleri HTML’e dönüştürmek için kullanılır.
// 🚩 Gereksiz: istemcide renderToString kullanmak
import { renderToString } from 'react-dom/server';
const html = renderToString(<MyIcon />);
console.log(html); // Örneğin, "<svg>...</svg>"İstemci üzerinde react-dom/server’ı import etmek paket boyutunuzu gereksiz yere artırır ve bundan kaçınılmalıdır. Bazı bileşenleri tarayıcıda HTML’e render etmeniz gerekiyorsa, createRoot kullanınız ve DOM’dan HTML okuyunuz:
import { createRoot } from 'react-dom/client';
import { flushSync } from 'react-dom';
const div = document.createElement('div');
const root = createRoot(div);
flushSync(() => {
  root.render(<MyIcon />);
});
console.log(div.innerHTML); // Örneğin, "<svg>...</svg>"DOM’un innerHTML özelliği okunmadan önce güncellenmesi için flushSync çağrısı gereklidir.
Sorun giderme
Bir bileşen askıya alındığında, HTML her zaman bir fallback içerir
renderToString Suspense’i tam olarak desteklemez.
Bir bileşen askıya alınırsa (örneğin, lazy ile tanımlandığı veya veri getirdiği için), renderToString içeriğinin çözümlenmesini beklemeyecektir. Bunun yerine, renderToString bunun üzerindeki en yakın <Suspense> sınırını bulacak ve HTML’de fallback prop’unu render edecektir. İstemci kodu yüklenene kadar içerik görünmeyecektir.
Bunu çözmek için, önerilen streaming çözümlerinden birini kullanın. Sunucu tarafı render’ı için, içerik sunucuda çözülürken parça parça akıtılabilir, böylece kullanıcı istemci kodu yüklenmeden önce sayfanın kademeli olarak doldurulduğunu görür. Statik site oluşturma için, tüm içerik çözülene kadar bekleyebilir ve ardından statik HTML’i oluşturabilir.