render
render
, bir JSX (“React düğümü”) parçasını tarayıcı DOM düğümüne render eder.
render(reactNode, domNode, callback?)
Başvuru dokümanı
render(reactNode, domNode, callback?)
Bir tarayıcı DOM düğümünün içerisinde bir React bileşeni göstermek için render
’ı çağırın.
import { render } from 'react-dom';
const domNode = document.getElementById('root');
render(<App />, domNode);
React, <App />
bileşenini domNode
içinde görüntüleyecek ve içindeki DOM’u yönetmeye başlayacaktır.
Tamamen React ile oluşturulmuş bir uygulama genellikle sadece bir render
çağrısıyla kök (root) bileşene sahip olur. Sayfanın bazı bölümleri için React “sprinkles” (serpme) kullanılan bir sayfada, ihtiyaç duyulan kadar çok render
çağrısı bulunabilir.
Daha fazla örnek için aşağıya bakın.
Parametreler
-
reactNode
: Görüntülemek istediğiniz React düğümü. Bu genellikle<App />
gibi bir JSX parçası olacaktır; ancak bir React elemanınıcreateElement()
ile oluşturabilir, bir dize, bir sayı,null
veyaundefined
de geçirebilirsiniz. -
domNode
: DOM elemanı. React, verdiğinizreactNode
’u bu DOM elemanının içinde gösterecektir. Bu andan itibaren, ReactdomNode
içindeki DOM’u yönetir ve React ağacınız (React tree) değiştiğinde güncellenir. -
optional
callback
: Fonksiyon. Geçilirse, React bileşeniniz DOM’a yerleştirildikten sonra bu fonksiyon çağrılır.
Dönüş değerleri
render
genellikle null
döndürür. Ancak, verdiğiniz reactNode
bir sınıf bileşeni ise, bu durumda bileşenin bir örneğini döndürecektir.
Dikkat edilmesi gerekenler
-
React 18’de
render
,createRoot
ile değiştirilmiştir. Lütfen React 18 ve sonrası içincreateRoot
kullanınız. -
İlk
render
çağrısında, React, React bileşenini render etmek içindomNode
içindeki tüm mevcut HTML içeriğini siler. EğerdomNode
’unuz, sunucu ya da derleme sürecinde React tarafından oluşturulan HTML içeriyorsa, mevcut HTML’e olay yöneticilerini (event handler) ekleyenhydrate()
fonksiyonunu kullanınız. -
Eğer aynı
domNode
üzerinde birden fazlarender
çağrısı yaparsanız, React, verdiğiniz son JSX’i yansıtmak için gerektiğinde DOM’u güncelleyecektir. React, DOM’un hangi kısımlarının yeniden kullanılabileceğine ve hangilerinin önceki ağaç (tree) ile “eşleştirilerek” yeniden oluşturulması gerektiğine karar verir. AynıdomNode
üzerinderender
çağrısı yapmak, kök bileşen (root component) üzerindeset
fonksiyonunu çağırmaya benzer: React gereksiz DOM güncellemelerinden kaçınır. -
Eğer uygulamanız tamamen React ile oluşturulmuşsa, uygulamanızda muhtemelen yalnızca bir
render
çağrısı olacaktır. (Bir çatı (framework) kullanıyorsanız, bunu sizin için yapabilir.) JSX’in bir parçasını bileşeninizin bir alt elemanı (child component) olmayan DOM ağacının farklı bir yerinde görüntülemek istediğinizde (örneğin, bir modal veya bir tooltip),render
yerinecreatePortal
kullanınız.
Kullanım
Bir React bileşenini bir tarayıcı DOM düğümünde görüntülemek için render
’ı çağırın.
import { render } from 'react-dom';
import App from './App.js';
render(<App />, document.getElementById('root'));
Kök bileşeni render etmek
Tamamen React ile oluşturulmuş uygulamalarda, genellikle bunu sadece başlangıçta bir kez yaparsınız - “kök” bileşenini (root component) render etmek için.
import './styles.css'; import { render } from 'react-dom'; import App from './App.js'; render(<App />, document.getElementById('root'));
Genellikle render
’ı tekrar çağırmanıza veya başka yerlere çağırmanıza gerek yoktur. Bu noktadan itibaren, React uygulamanızın DOM’unu yönetmeye başlar. Kullanıcı arayüzünü güncellemek için bileşenleriniz state kullanır.
Birden çok kök oluşturma
Eğer sayfanız tamamen React ile oluşturulmamışsa, React tarafından yönetilen her bir üst düzey kullanıcı arayüzü (UI) parçası için render
’ı çağırınız.
import './styles.css'; import { render } from 'react-dom'; import { Comments, Navigation } from './Components.js'; render( <Navigation />, document.getElementById('navigation') ); render( <Comments />, document.getElementById('comments') );
Render edilmiş ağaçları (trees) unmountComponentAtNode()
ile yok edebilirsiniz.
Render edilmiş ağaçları güncelleme
Aynı DOM düğümünde render
fonksiyonunu birden fazla kez çağırabilirsiniz. Bileşen ağacının yapısı önceden oluşturulanla eşleştiği sürece, React durumu korur. Giriş alanına yazı yazabilmeniz, her saniyede tekrarlanan render
çağrılarının yıkıcı(destructive) olmadığını gösterir:
import { render } from 'react-dom'; import './styles.css'; import App from './App.js'; let i = 0; setInterval(() => { render( <App counter={i} />, document.getElementById('root') ); i++; }, 1000);
Bu şekilde birden fazla kez render
çağırmak nadiren gerçekleşir. Genellikle, bunun yerine bileşenlerinizin (component) içinde state’i güncellersiniz.