render
render
renderiza uma peça de JSX (“nó React”) em um nó do DOM do navegador.
render(reactNode, domNode, callback?)
Referência
render(reactNode, domNode, callback?)
Chame render
para exibir um componente React dentro de um elemento do DOM do navegador.
import { render } from 'react-dom';
const domNode = document.getElementById('root');
render(<App />, domNode);
O React exibirá <App />
no domNode
e assumirá o controle do gerenciamento do DOM dentro dele.
Um aplicativo totalmente construído com o React geralmente terá apenas uma chamada render
com seu componente raiz. Uma página que usa “pintadas” de React para partes da página pode ter quantas chamadas render
forem necessárias.
Parâmetros
-
reactNode
: Um nó React que você deseja exibir. Isso geralmente será uma peça de JSX como<App />
, mas você também pode passar um elemento React construído comcreateElement()
, uma string, um número,null
ouundefined
. -
domNode
: Um elemento DOM. O React exibirá oreactNode
que você passar dentro deste elemento DOM. A partir desse momento, o React gerenciará o DOM dentro dodomNode
e o atualizará quando sua árvore React mudar. -
opcional
callback
: Uma função. Se passado, o React a chamará após seu componente ser colocado no DOM.
Retornos
render
geralmente retorna null
. No entanto, se o reactNode
que você passar for um componente de classe, então retornará uma instância desse componente.
Ressalvas
-
No React 18,
render
foi substituído porcreateRoot
. Por favor, usecreateRoot
para o React 18 e posteriores. -
A primeira vez que você chamar
render
, o React limpará todo o conteúdo HTML existente dentro dodomNode
antes de renderizar o componente React nele. Se seudomNode
contém HTML gerado pelo React no servidor ou durante a construção, usehydrate()
em vez disso, que anexa os manipuladores de eventos ao HTML existente. -
Se você chamar
render
no mesmodomNode
mais de uma vez, o React atualizará o DOM conforme necessário para refletir o último JSX que você passou. O React decidirá quais partes do DOM podem ser reutilizadas e quais precisam ser recriadas por meio da “correspondência” com a árvore previamente renderizada. Chamarrender
novamente no mesmodomNode
é semelhante a chamar afunção set
no componente raiz: o React evita atualizações desnecessárias do DOM. -
Se seu aplicativo for totalmente construído com o React, você provavelmente terá apenas uma chamada
render
em seu aplicativo. (Se você usar um framework, ele pode fazer essa chamada por você.) Quando você quiser renderizar uma peça de JSX em uma parte diferente da árvore DOM que não é filha do seu componente (por exemplo, um modal ou uma dica), usecreatePortal
em vez derender
.
Uso
Chame render
para exibir um componente React dentro de um nó do DOM do navegador.
import { render } from 'react-dom';
import App from './App.js';
render(<App />, document.getElementById('root'));
Renderizando o componente raiz
Em aplicativos totalmente construídos com o React, você geralmente fará isso apenas uma vez na inicialização—para renderizar o componente “raiz”.
import './styles.css'; import { render } from 'react-dom'; import App from './App.js'; render(<App />, document.getElementById('root'));
Geralmente, você não deve precisar chamar render
novamente ou chamá-lo em mais lugares. A partir desse ponto, o React estará gerenciando o DOM de sua aplicação. Para atualizar a interface do usuário, seus componentes irão usar estado.
Renderizando múltiplas raízes
Se sua página não for totalmente construída com o React, chame render
para cada peça de UI de nível superior gerenciada pelo React.
import './styles.css'; import { render } from 'react-dom'; import { Comments, Navigation } from './Components.js'; render( <Navigation />, document.getElementById('navigation') ); render( <Comments />, document.getElementById('comments') );
Você pode destruir as árvores renderizadas com unmountComponentAtNode()
.
Atualizando a árvore renderizada
Você pode chamar render
mais de uma vez no mesmo nó DOM. Desde que a estrutura da árvore de componentes corresponda ao que foi renderizado anteriormente, o React irá preservar o estado. Observe como você pode digitar na entrada, o que significa que as atualizações das chamadas de render
repetidas a cada segundo não são destrutivas:
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);
É incomum chamar render
várias vezes. Geralmente, você atualizará o estado dentro de seus componentes em vez disso.