{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2018/03/29/react-v-16-3.html","result":{"data":{"markdownRemark":{"html":"<p>Há alguns dias, <a href=\"/blog/2018/03/27/update-on-async-rendering.html\">escrevemos uma postagem sobre as próximas mudanças em nossos métodos de ciclo de vida legados</a>, incluindo estratégias de migração gradual. No React 16.3.0, estamos adicionando alguns novos métodos de ciclo de vida para ajudar nessa migração. Também estamos introduzindo novas APIs para funcionalidades há tempo solicitadas: uma API de contexto oficial, uma API de referência de encaminhamento e uma API de referência de ergonomia.</p>\n<p>Leia para saber mais sobre o lançamento.</p>\n<h2 id=\"official-context-api\"><a href=\"#official-context-api\" 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>API Oficial de Contexto </h2>\n<p>Por muitos anos, o React ofereceu uma API experimental para contexto. Embora fosse uma ferramenta poderosa, seu uso foi desencorajado por causa de problemas inerentes na API, e porque sempre pretendíamos substituir a API experimental por uma melhor.</p>\n<p>A versão 16.3 introduz uma nova API de contexto que é mais eficiente e suporta tanto verificação de tipo estático quanto atualizações profundas.</p>\n<blockquote>\n<p><strong>Nota</strong></p>\n<p>A antiga API de contexto continuará funcionando para todas as versões do React 16.x, assim você terá tempo para migrar.</p>\n</blockquote>\n<p>Aqui está um exemplo ilustrando como você pode introduzir um “tema” usando a nova API de contexto:\n<div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> ThemeContext <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createContext</span><span class=\"token punctuation\">(</span><span class=\"token string\">'light'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">ThemeProvider</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  state <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>theme<span class=\"token operator\">:</span> <span class=\"token string\">'light'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n<span class=\"gatsby-highlight-code-line\">      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">ThemeContext.Provider</span></span> <span class=\"token attr-name\">value</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>state<span class=\"token punctuation\">.</span>theme<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">        </span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>children<span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">ThemeContext.Provider</span></span><span class=\"token punctuation\">></span></span></span>    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">ThemedButton</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n<span class=\"gatsby-highlight-code-line\">      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">ThemeContext.Consumer</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">        </span><span class=\"token punctuation\">{</span><span class=\"token parameter\">theme</span> <span class=\"token operator\">=></span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Button</span></span> <span class=\"token attr-name\">theme</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>theme<span class=\"token punctuation\">}</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token plain-text\">      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">ThemeContext.Consumer</span></span><span class=\"token punctuation\">></span></span></span>    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n        </div></p>\n<p><a href=\"/docs/context.html\">Saiba mais sobre a nova API de contexto aqui.</a></p>\n<h2 id=\"createref-api\"><a href=\"#createref-api\" 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>API <code class=\"gatsby-code-text\">createRef</code> </h2>\n<p>Anteriormente, o React fornecia duas maneiras de gerenciar refs: a legada API de string ref e a API de callback. Embora a API de string ref ter sido a mais conveniente das duas, ela tinha <a href=\"https://github.com/facebook/react/issues/1373\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">várias desvantagens</a> e assim nossa recomendação oficial era usar a forma de callback.</p>\n<p>A versão 16.3 adiciona uma nova opção para gerenciar refs que oferecem o conforto de uma string ref sem nenhuma das desvantagens:\n<div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"token keyword\">class</span> <span class=\"token class-name\">MyComponent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">super</span><span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">}</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">.</span>current<span class=\"token punctuation\">.</span><span class=\"token function\">focus</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n        </div></p>\n<blockquote>\n<p><strong>Nota:</strong></p>\n<p>As refs de callbacks continuarão sendo suportadas, além da nova API <code class=\"gatsby-code-text\">createRef</code>.</p>\n<p>Você não precisa substituir as callback refs em seus componentes. Elas são um pouco mais flexíveis, portanto, elas permanecerão como um recurso avançado.</p>\n</blockquote>\n<p><a href=\"/docs/refs-and-the-dom.html\">Saiba mais sobre a nova API <code class=\"gatsby-code-text\">createRef</code> aqui.</a></p>\n<h2 id=\"forwardref-api\"><a href=\"#forwardref-api\" 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>API <code class=\"gatsby-code-text\">forwardRef</code> </h2>\n<p>Geralmente, os componentes React são declarativos, mas às vezes é necessário o acesso imperativo às instâncias do componente e aos nós DOM necessários. Isso é comum em casos de uso, como gerenciamento de foco, seleção ou animações. O React fornece <a href=\"/docs/refs-and-the-dom.html\">refs</a> uma maneira de resolver este problema. No entanto, o encapsulamento de componentes apresenta alguns desafios com as refs.</p>\n<p>Por exemplo, se você trocar um <code class=\"gatsby-code-text\">&lt;button&gt;</code> por um componente <code class=\"gatsby-code-text\">&lt;FancyButton&gt;</code>, o atributo <code class=\"gatsby-code-text\">ref</code> nele começará a apontar para o componente encapsulando em vez do nó DOM (e seria <code class=\"gatsby-code-text\">null</code> para componentes funcionais). Embora isso seja desejável para componentes de “nível de aplicação” como <code class=\"gatsby-code-text\">FeedStory</code> ou <code class=\"gatsby-code-text\">Comment</code> que precisam ser encapsulados, isso pode ser incômodo para componentes “folha” como <code class=\"gatsby-code-text\">FancyButton</code> ou <code class=\"gatsby-code-text\">MyTextInput</code> que são tipicamente usados como seus equivalentes do DOM e podem precisar expor seus nós do DOM.</p>\n<p>A referência de encaminhamento é um novo recurso de inclusão que permite que alguns componentes <code class=\"gatsby-code-text\">ref</code> sejam recebidos, e passem para baixo (em outras palavras, “encaminhá-lo”) para um filho. No exemplo abaixo, <code class=\"gatsby-code-text\">FancyButton</code> encaminha seu ref para um <code class=\"gatsby-code-text\">button</code> do DOM que renderiza:</p>\n<p><div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> FancyButton <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">forwardRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props<span class=\"token punctuation\">,</span> ref</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span> <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>FancyButton<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"token plain-text\">    </span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>children<span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>button</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// You can now get a ref directly to the DOM button:</span>\n<span class=\"token keyword\">const</span> ref <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">FancyButton</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Click me!</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">FancyButton</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span></code></pre>\n        </div></p>\n<p>Dessa forma, os componentes que usam <code class=\"gatsby-code-text\">FancyButton</code> podem obter uma ref ao nó inerente do <code class=\"gatsby-code-text\">button</code> do DOM e acessá-lo se necessário for, como se usassem um <code class=\"gatsby-code-text\">button</code> do DOM diretamente.</p>\n<p>O encaminhamento de ref não está limitado para componentes de “folha” que rederizam nós do DOM. Se você escreve <a href=\"/docs/higher-order-components.html\">componente de alta-ordem</a>, recomendamos o uso do encaminhamento de referência para passar automaticamente as ref para as instâncias do componente de classe wrapper.</p>\n<p><a href=\"/docs/forwarding-refs.html\">Saiba mais sobre a API forwardRef aqui.</a></p>\n<h2 id=\"component-lifecycle-changes\"><a href=\"#component-lifecycle-changes\" 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>Mudanças no Ciclo de Vida do Componente </h2>\n<p>A API de componente de classe do React existe há anos com poucas mudanças. No entanto, como nós adicionamos suporte a recursos mais avançados (tal como <a href=\"/docs/react-component.html#componentdidcatch\">limite de erros</a> e o próximo <a href=\"/blog/2018/03/01/sneak-peek-beyond-react-16.html\">modo de renderização assíncrona</a>) nós estendemos esta API de maneiras que não foram originalmente projetadas.</p>\n<p>Por exemplo, com a API atual, é muito fácil bloquear a renderização inicial com lógica não essencial. Em parte, isso ocorre porque há muitas maneiras de realizar uma determinada tarefa, e pode não ser claro qual é a melhor. Observamos que o comportamento de interrupção do tratamento de erros geralmente não é levado em consideração e pode resultar em vazamentos de memória (algo que também afetará o próximo modo de renderização assíncrona). A API do componente de classe atual também complica outros esforços, como o nosso trabalho em <a href=\"https://twitter.com/trueadm/status/944908776896978946\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">prototipar um compilador React</a>.</p>\n<p>Muitos desses problemas são exacerbados por um subconjunto dos ciclos de vida dos componentes (<code class=\"gatsby-code-text\">componentWillMount</code>, <code class=\"gatsby-code-text\">componentWillReceiveProps</code>, e <code class=\"gatsby-code-text\">componentWillUpdate</code>). Esses também são os ciclos de vida que mais causam confusão na comunidade React. Por essas razões, vamos depreciar esses métodos em favor de alternativas melhores.</p>\n<p>Reconhecemos que essa alteração afetará muitos componentes existentes. Por isso, o caminho de migração será o mais gradual possível e fornecerá alternativas de escape. (No Facebook, mantemos mais de 50.000 componentes React. Também dependemos de um ciclo de lançamento gradual!)</p>\n<blockquote>\n<p><strong>Nota:</strong></p>\n<p>Os avisos de deprecação serão ativados com uma versão 16.x futura, <strong>mas os ciclos de vida herdados continuarão funcionando até a versão 17</strong>.</p>\n<p>Mesmo na versão 17, ainda será possível usá-los, mas eles terão um prefixo “UNSAFE_” para indicar que podem causar problemas. Nós também preparamos um <a href=\"https://github.com/reactjs/react-codemod#rename-unsafe-lifecycles\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">script automatizado para renomeá-los</a> no código existente.</p>\n</blockquote>\n<p>Além de depreciar ciclos de vida inseguros, também estamos adicionando alguns novos ciclos de vida:</p>\n<ul>\n<li><a href=\"/docs/react-component.html#static-getderivedstatefromprops\"><code class=\"gatsby-code-text\">getDerivedStateFromProps</code></a> está sendo adicionado como uma alternativa mais segura ao legado <code class=\"gatsby-code-text\">componentWillReceiveProps</code>. (Note que <a href=\"/blog/2018/06/07/you-probably-dont-need-derived-state.html\">na maioria dos casos você não precisa de nenhum deles</a>.)</li>\n<li><a href=\"/docs/react-component.html#getsnapshotbeforeupdate\"><code class=\"gatsby-code-text\">getSnapshotBeforeUpdate</code></a> está sendo adicionado para oferecer suporte para leitura segura das propriedades, por exemplo, do DOM, antes que as atualizações sejam feitas.</li>\n</ul>\n<p><a href=\"/blog/2018/03/27/update-on-async-rendering.html\">Saiba mais sobre essas mudanças no ciclo de vida aqui.</a></p>\n<h2 id=\"strictmode-component\"><a href=\"#strictmode-component\" 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>Componente <code class=\"gatsby-code-text\">StrictMode</code> </h2>\n<p><code class=\"gatsby-code-text\">StrictMode</code> é uma ferramenta para destacar possíveis problemas em um aplicativo. Como o <code class=\"gatsby-code-text\">Fragment</code>, o<code class=\"gatsby-code-text\">StrictMode</code> não renderiza nenhuma UI visível. Ele ativa verificações e avisos adicionais para seus descendentes.</p>\n<blockquote>\n<p><strong>Nota:</strong></p>\n<p><code class=\"gatsby-code-text\">StrictMode</code> as verificações são executadas apenas no modo de desenvolvimento; <em>eles não afetam a estrutura de produção</em>.</p>\n</blockquote>\n<p>Embora não seja possível para o “strict mode” detectar todos os problemas (por exemplo, certos tipos de mutação), ele pode ajudar em muitos. Se você ver avisos no “strict mode”, essas coisas provavelmente causarão bugs para renderização assíncrona.</p>\n<p>Na versão 16.3, o <code class=\"gatsby-code-text\">StrictMode</code> ajuda:</p>\n<ul>\n<li>Identificando componentes com ciclos de vida inseguros</li>\n<li>Aviso sobre o uso de string legada da API ref</li>\n<li>Detectando efeitos colaterais inesperados</li>\n</ul>\n<p>Funcionalidades adicionais serão adicionadas com versões futuras do React.</p>\n<p><a href=\"/docs/strict-mode.html\">Aprenda mais sobre o componente <code class=\"gatsby-code-text\">StrictMode</code> aqui.</a></p>","excerpt":"Há alguns dias, escrevemos uma postagem sobre as próximas mudanças em nossos métodos de ciclo de vida legados, incluindo estratégias de migração gradual. No React 16.3.0, estamos adicionando alguns novos métodos de ciclo de vida para ajudar nessa migração. Também estamos introduzindo novas APIs para funcionalidades há tempo solicitadas: uma API de contexto oficial, uma API de referência de encaminhamento e uma API de referência de ergonomia. Leia para saber mais sobre o lançamento. API Oficial…","frontmatter":{"title":"React v16.3.0: Novos ciclos de vida e API de contexto","next":null,"prev":null,"author":[{"frontmatter":{"name":"Brian Vaughn","url":"https://github.com/bvaughn"}}]},"fields":{"date":"29 de março de 2018","path":"content/blog/2018-03-29-react-v-16-3.md","slug":"/blog/2018/03/29/react-v-16-3.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"React v17.0"},"fields":{"slug":"/blog/2020/10/20/react-v17.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Candidato à lançamento: Sem novas funcionalidades"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Construindo Ótimas Experiências de Usuário com Modo Concorrente e Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparando para o Futuro com as Prereleases React"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 e a atualização do Roadmap"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"O React já esta traduzido? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: O React com Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}}]}},"pageContext":{"slug":"/blog/2018/03/29/react-v-16-3.html"}},"staticQueryHashes":[]}