Renderizando JSX no DOM

A função ReactDOM.render () pode ser usada para renderizar expressões JSX para o DOM. Na verdade, depois que Babel transforma o JSX, tudo o que está fazendo é renderizar elementos criados pelo React.createElement(). Mais uma vez, o JSX é apenas um suporte para evitarmos repetidas chamadas da função React.createElement().

No exemplo de código, estou representando um elemento <li> e um elemento <foo-bar> personalizado para o DOM usando expressões JSX.

source code

Um vez renderizado no DOM, o HTML será o seguinte:

<body>
    <div id="app1"><li class="bar" data-reactid=".0">foo</li></div>
    <div id="app2"><foo-bar classname="bar" children="foo" data-reactid=".1">foo</foo-bar></div>
</body>

Basta lembrar que a Babel está pegando o JSX em seus arquivos JavaScript, transformando-o em elementos React (ou seja, chamadas de funções React.createElement ()), e em seguida, usando esses elementos criados pelo React (ou seja, o DOM virtual) como um modelo para criar um ramo real do DOM. A parte em que os elementos React são transformados em elementos reais do DOM e adicionados ao DOM em uma página HTML ocorre quando ReactDOM.render() é chamado.

Observações

  • Todos os nós DOM dentro do elemento DOM em que você está renderizando serão removidos/substituídos.
  • ReactDOM.render() não modifica o nó do elemento DOM em que você está renderizando o React.
  • A renderização para um HTML DOM é apenas uma opção com React, [outras versões APi estão disponíveis] (https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring). Por exemplo, também é possível renderizar para uma string (isto é, ReactDOMServer.renderToString()) no lado do servidor.
  • Re-renderizar para o mesmo elemento DOM só atualizará os nós filhos atuais se uma alteração (ou seja, diff) tenha ocorrido ou um novo nó filho tenha sido adicionado.
  • Nunca invoque this.render() você mesmo, deixe isso para o React

results matching ""

    No results matching ""