{"componentChunkName":"component---src-templates-docs-js","path":"/docs/codebase-overview.html","result":{"data":{"markdownRemark":{"html":"<!-- OBS: Perguntei na issue do \"glossário\" como codebase ficaria em ptbr e disseram código-base ao invés de base de código, se ficar muito estranho por favor avisem :like: -->\n<p>Esta seção fornecerá uma visão geral da organização do código-base React, suas convenções e implementação.</p>\n<p>Se você quer <a href=\"/docs/how-to-contribute.html\">contribuir para o React</a>, esperamos que este guia ajude você a se sentir mais à vontade para fazer mudanças.</p>\n<p>Não recomendamos necessariamente nenhuma dessas convenções nos aplicativos React. Muitas delas existem por razões históricas e podem mudar com o tempo.</p>\n<h3 id=\"top-level-folders\"><a href=\"#top-level-folders\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pastas de nível superior </h3>\n<p>Depois de clonar o <a href=\"https://github.com/facebook/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">repositório do React</a>, você verá algumas pastas no nível superior:</p>\n<ul>\n<li><a href=\"https://github.com/facebook/react/tree/master/packages\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">packages</code></a> contém metadados (como <code class=\"gatsby-code-text\">package.json</code>) e o código fonte (subdiretório <code class=\"gatsby-code-text\">src</code>) para todos os pacotes no repositório React. <strong>Se a sua alteração está relacionada ao código, o subdiretório <code class=\"gatsby-code-text\">src</code> de cada pacote é onde você passará a maior parte do seu tempo.</strong></li>\n<li><a href=\"https://github.com/facebook/react/tree/master/fixtures\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">fixtures</code></a> contém alguns pequenos aplicativos de teste do React para os contribuidores.</li>\n<li><code class=\"gatsby-code-text\">build</code> é a saída de compilação do React. Não está no repositório, mas aparecerá no seu clone do React depois de você <a href=\"/docs/how-to-contribute.html#development-workflow\">fizer o <em>build</em></a> pela primeira vez.</li>\n</ul>\n<p>A documentação está hospedada <a href=\"https://github.com/reactjs/reactjs.org\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">em um repositório separado do React</a>.</p>\n<p>Existem algumas outras pastas no nível superior, mas elas são usadas principalmente para as ferramentas e você provavelmente nunca as encontrará ao contribuir.</p>\n<h3 id=\"colocated-tests\"><a href=\"#colocated-tests\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Testes Colocados </h3>\n<p>Nós não temos um diretório no nível superior para testes unitários. Em vez disso, nós os colocamos em um diretório chamado <code class=\"gatsby-code-text\">__tests__</code> relativo aos arquivos que eles testam.</p>\n<p>Por exemplo, um teste para <a href=\"https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/setInnerHTML.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">setInnerHTML.js</code></a> está localizado em <a href=\"https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/__tests__/setInnerHTML-test.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">__tests__/setInnerHTML-test.js</code></a> ao lado dele.</p>\n<h3 id=\"warnings-and-invariants\"><a href=\"#warnings-and-invariants\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Avisos e Invariantes </h3>\n<p>O código-base do React usa <code class=\"gatsby-code-text\">console.error</code> para exibir avisos:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>__DEV__<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">error</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Something is wrong.'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Os alertas só são ativados no desenvolvimento. Na produção, eles são  retirados. Se você precisar impedir a execuçāo de algum caminho do código, use o módulo <code class=\"gatsby-code-text\">invariant</code> em vez disso:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">var</span> invariant <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'invariant'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token function\">invariant</span><span class=\"token punctuation\">(</span>\n  <span class=\"token number\">2</span> <span class=\"token operator\">+</span> <span class=\"token number\">2</span> <span class=\"token operator\">===</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">'Você não vai passar!'</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><strong>O invariant é lançado quando a condição <code class=\"gatsby-code-text\">invariant</code> é <code class=\"gatsby-code-text\">false</code>.</strong></p>\n<p>“Invariant” é apenas uma maneira de dizer “essa condição sempre é verdadeira”. Você pode pensar nisso como fazer uma afirmação.</p>\n<p>É importante manter o comportamento de desenvolvimento e produção similares. Então o <code class=\"gatsby-code-text\">invariant</code> é lançado tanto no desenvolvimento quanto na produção. As mensagens de erro são substituídas automaticamente por códigos de erro em produção para evitar afetar negativamente o tamanho do byte.</p>\n<h3 id=\"development-and-production\"><a href=\"#development-and-production\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Desenvolvimento e produção </h3>\n<p>Você pode usar a variável pseudo-global <code class=\"gatsby-code-text\">__DEV__</code> no código-base para proteger blocos de código usados apenas no desenvolvimento.</p>\n<p>Ele é embutido durante a etapa de compilação e se transforma em verificações <code class=\"gatsby-code-text\">process.env.NODE_ENV! == &#39;production&#39;</code> nos builds do CommonJS.</p>\n<p>Para builds autônomas, ele se torna <code class=\"gatsby-code-text\">true</code> na build não-minificada e é completamente eliminado com os blocos <code class=\"gatsby-code-text\">if</code> que ele guarda na construção minificada.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>__DEV__<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// Esse código vai executar apenas no desenvolvimento.</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"flow\"><a href=\"#flow\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Flow </h3>\n<p>Recentemente, começamos a introduzir verificações do <a href=\"https://flow.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Flow</a> no código-base. Os arquivos marcados com a anotação <code class=\"gatsby-code-text\">@ flow</code> no comentário do cabeçalho da licença estão sendo verificados com typecheck.</p>\n<p>Aceitamos pull requests <a href=\"https://github.com/facebook/react/pull/7600/files\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">adicionando anotações do Flow ao código existente</a>. Anotações de fluxo são assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">ReactRef<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">detachRefs</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span>\n  <span class=\"token parameter\">instance<span class=\"token operator\">:</span> ReactInstance<span class=\"token punctuation\">,</span>\n  element<span class=\"token operator\">:</span> ReactElement <span class=\"token operator\">|</span> string <span class=\"token operator\">|</span> number <span class=\"token operator\">|</span> <span class=\"token keyword\">null</span> <span class=\"token operator\">|</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span></span>\n<span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token keyword\">void</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// ...</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Quando possível, o novo código deve usar anotações do Flow.\nVocê pode executar o <code class=\"gatsby-code-text\">yarn flow</code> localmente para verificar seu código com o Flow.</p>\n<h3 id=\"multiple-packages\"><a href=\"#multiple-packages\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Pacotes Múltiplos </h3>\n<p>React é um <a href=\"https://danluu.com/monorepo/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">monorepo</a>. Seu repositório contém vários pacotes separados para que suas alterações possam ser coordenadas em conjunto e os problemas residam em um só lugar.</p>\n<h3 id=\"react-core\"><a href=\"#react-core\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>React Core </h3>\n<p>O “core” do React inclui todas as <a href=\"/docs/top-level-api.html#react\"><code class=\"gatsby-code-text\">React</code> APIs de nível superior</a>, por exemplo:</p>\n<ul>\n<li><code class=\"gatsby-code-text\">React.createElement()</code></li>\n<li><code class=\"gatsby-code-text\">React.Component</code></li>\n<li><code class=\"gatsby-code-text\">React.Children</code></li>\n</ul>\n<p><strong>O core React inclui apenas as APIs necessárias para definir os componentes.</strong> Não inclui o algoritmo de <a href=\"/docs/reconciliation.html\">reconciliação</a> ou qualquer código específico da plataforma. Ele é usado pelos componentes React DOM e React Native.</p>\n<p>O código do React core está localizado em <a href=\"https://github.com/facebook/react/tree/master/packages/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">packages/react</code></a> na árvore de origem. Está disponível no npm como o pacote <a href=\"https://www.npmjs.com/package/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react</code></a>. A construção do navegador independente correspondente é chamada <code class=\"gatsby-code-text\">react.js</code>,e exporta um global chamado <code class=\"gatsby-code-text\">React</code>.</p>\n<h3 id=\"renderers\"><a href=\"#renderers\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Renderizadores </h3>\n<p>O React foi originalmente criado para o DOM, mas depois foi adaptado para também suportar plataformas nativas com o <a href=\"https://reactnative.dev/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">React Native</a>. Isso introduziu o conceito de “renderizadores” para as partes internas do React.</p>\n<p><strong>Os renderizadores gerenciam como uma árvore no React se transforma nas chamadas de subjacentes da plataforma.</strong></p>\n<p>Renderizadores tambéms são encontrados em <a href=\"https://github.com/facebook/react/tree/master/packages/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">packages/</code></a>:</p>\n<ul>\n<li><a href=\"https://github.com/facebook/react/tree/master/packages/react-dom\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Renderizador de React DOM</a> renderiza componentes React para o DOM. Implementa <a href=\"/docs/react-dom.html\">APIs do <code class=\"gatsby-code-text\">React</code> de nível superior</a> e está disponível como pacote npm <a href=\"https://www.npmjs.com/package/react-dom\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react-dom</code></a>. Ele também pode ser usado como um pacote de navegador autônomo chamado <code class=\"gatsby-code-text\">react-dom.js</code> que exporta um global do <code class=\"gatsby-code-text\">ReactDOM</code>.</li>\n<li><a href=\"https://github.com/facebook/react/tree/master/packages/react-native-renderer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Renderizador do React Native</a> renderiza componentes React para views nativas. É usado internamente pelo React Native.</li>\n<li><a href=\"https://github.com/facebook/react/tree/master/packages/react-test-renderer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Renderizador de testes do React</a> renderiza componentes React para árvores JSON. É usado pela funcionalidade de <a href=\"https://facebook.github.io/jest/blog/2016/07/27/jest-14.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">teste de Snapshot</a> atributo do <a href=\"https://facebook.github.io/jest\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jest</a> e está disponível como pacote npm <a href=\"https://www.npmjs.com/package/react-test-renderer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-test-renderer</a> .</li>\n</ul>\n<p>O único outro renderizador oficialmente suportado é o <a href=\"https://github.com/facebook/react/tree/master/packages/react-art\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react-art</code></a>. Costumava estar em um <a href=\"https://github.com/reactjs/react-art\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">repositorio GitHub</a> separado mas nós os movemos para a árvore de código principal.</p>\n<blockquote>\n<p><strong>Nota:</strong></p>\n<p>Tecnicamente o <a href=\"https://github.com/facebook/react/tree/master/packages/react-native-renderer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react-native-renderer</code></a> é uma camada muito fina que ensina o React a interagir com a implementação do React Native. O código específico da plataforma real que gerencia as views nativas reside no <a href=\"https://github.com/facebook/react-native\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">repositório do React Native</a> junto com seus componentes.</p>\n</blockquote>\n<h3 id=\"reconcilers\"><a href=\"#reconcilers\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reconciliadores </h3>\n<p>Até mesmo renderizadores muito diferentes, como o React DOM e o React Native, precisam compartilhar muita lógica. Em particular, o algoritmo de  <a href=\"/docs/reconciliation.html\">reconciliação</a> deve ser o mais semelhante possível para que a renderização declarativa, os componentes personalizados, o state, os lifecycle méthods e os refs funcionem de maneira consistente em todas as plataformas.</p>\n<p>Para resolver isso, diferentes renderizadores compartilham algum código entre eles. Nós chamamos essa parte do React de “reconciliador”. Quando uma atualização como <code class=\"gatsby-code-text\">setState()</code> está agendado, o reconciliador chama o método <code class=\"gatsby-code-text\">render()</code> em componentes na árvore e monta, atualiza ou desmonta.</p>\n<p>Os reconciliadores não são empacotados separadamente porque atualmente não possuem uma API pública. Em vez disso, eles são usados exclusivamente por renderizadores como React DOM e React Native.</p>\n<h3 id=\"stack-reconciler\"><a href=\"#stack-reconciler\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reconciliador Stack </h3>\n<p>O reconciliador “stack” é a implementação que energiza o React 15 e o anterior. Desde então, paramos de usá-lo, mas está documentado em detalhes na <a href=\"/docs/implementation-notes.html\">próxima seção</a>.</p>\n<h3 id=\"fiber-reconciler\"><a href=\"#fiber-reconciler\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reconciliador Fiber </h3>\n<p>O reconciliador de “fiber” é um novo esforço com o objetivo de resolver os problemas inerentes ao reconciliador de pilha e corrigir alguns problemas de longa data. Foi o reconciliador padrão desde o React 16.</p>\n<p>Seus principais objetivos são:</p>\n<ul>\n<li>Capacidade de dividir o trabalho ininterrupto em blocos.</li>\n<li>Capacidade de priorizar, rebaixar e reutilizar o trabalho em andamento.</li>\n<li>Capacidade de retroceder entre pais e filhos para dar suporte ao layout no React.</li>\n<li>Capacidade de retornar vários elementos do método <code class=\"gatsby-code-text\">render()</code>.</li>\n<li>Melhor suporte para limites de erro.</li>\n</ul>\n<p>Você pode ler mais sobre a arquitetura do React Fiber <a href=\"https://github.com/acdlite/react-fiber-architecture\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">aqui</a> e <a href=\"https://blog.ag-grid.com/inside-fiber-an-in-depth-overview-of-the-new-reconciliation-algorithm-in-react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">aqui</a>. Embora tenha sido fornecido com o React 16, os recursos assíncronos ainda não estão habilitados por padrão.</p>\n<p>Seu código-fonte está localizado em <a href=\"https://github.com/facebook/react/tree/master/packages/react-reconciler\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">packages/react-reconciler</code></a>.</p>\n<h3 id=\"event-system\"><a href=\"#event-system\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sistema de Eventos  </h3>\n<p>O React implementa uma camada sobre eventos nativos para suavizar as diferenças entre navegadores. Seu código fonte está localizado em <a href=\"https://github.com/facebook/react/tree/master/packages/react-dom/src/events\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">packages/react-dom/src/events</code></a>.</p>\n<h3 id=\"what-next\"><a href=\"#what-next\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Qual o proximo passo? </h3>\n<p>Leia a <a href=\"/docs/implementation-notes.html\">próxima seção</a>para aprender sobre a implementação do reconciliador antes do React 16 em mais detalhes. Ainda não documentamos os componentes internos do novo reconciliador.</p>","frontmatter":{"title":"Codebase Overview","next":"implementation-notes.html","prev":"how-to-contribute.html"},"fields":{"path":"content/docs/codebase-overview.md","slug":"docs/codebase-overview.html"}}},"pageContext":{"slug":"docs/codebase-overview.html"}},"staticQueryHashes":[]}