{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2016/04/07/react-v15.html","result":{"data":{"markdownRemark":{"html":"<p>Gostaríamos de agradecer à comunidade React por continuar relatando os problemas e regressões encontrados nos candidatos a release em nosso  <a href=\"https://github.com/facebook/react/issues/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">registro de erros</a>. Nas últimas semanas, corrigimos os problemas encontrados e, agora, após dois candidatos a release, estamos empolgados para finalmente lançar a versão estável do React 15.</p>\n<p>Como lembrete, <a href=\"/blog/2016/02/19/new-versioning-scheme.html\">estamos mudando para as principais versões</a> para indicar que estamos usando o React em produção há muito tempo. O release 15.0 segue o 0.14 anterior e continuaremos a seguir esse versionamento semântico como fazemos desde 2013. É importante também notar que <a href=\"/blog/2016/01/12/discontinuing-ie8-support.html\">não temos mais suporte ativo para o Internet Explorer 8</a>. Acreditamos que o React funcionará na sua forma atual, mas não priorizaremos nenhum esforço para corrigir novos problemas que afetam apenas o IE8.</p>\n<p>O React 15 traz melhorias significativas na maneira como interagimos com o DOM:</p>\n<ul>\n<li>Agora usamos <code class=\"gatsby-code-text\">document.createElement</code> ao invés de <code class=\"gatsby-code-text\">innerHTML</code> ao montar componentes. Isso nos livra  do atributo <code class=\"gatsby-code-text\">data-reactid</code> em todos os nós e torna o DOM mais leve. O uso de <code class=\"gatsby-code-text\">document.createElement</code> também é mais rápido nos navegadores modernos e corrige vários casos extremos relacionados a elementos SVG e a execução de várias cópias do React na mesma página.</li>\n<li>Em termos históricos, nosso suporte ao SVG foi incompleto e muitas tags e atributos estavam ausentes. Ouvimos você e, no React 15, <a href=\"https://github.com/facebook/react/pull/6243\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">adicionamos suporte a todos os atributos SVG reconhecidos pelos navegadores atuais</a>. Se esquecemos algum atributo que você gostaria de usar, por favor, <a href=\"https://github.com/facebook/react/issues/1657\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nos informe</a>. Como bônus, graças ao uso do <code class=\"gatsby-code-text\">document.createElement</code>, não precisamos mais manter uma lista de tags SVG; portanto, quaisquer tags SVG que anteriormente não eram compatíveis devem funcionar normalmente no React 15.</li>\n<li>Recebemos algumas contribuições surpreendentes da comunidade nessa release e gostaríamos de destacar em particular <a href=\"https://github.com/facebook/react/pull/5753\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">essa pull request</a> do <a href=\"https://github.com/mwiencek\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Michael Wiencek</a>. Graças ao trabalho do Michael, o React 15 não emite mais extra <code class=\"gatsby-code-text\">&lt;span&gt;</code> nós ao redor do texto, tornando o resultado do DOM muito mais limpo. Esse era um incômodo antigo dos usuários do React, por isso é tão legal que essa mudança seja uma contribuição externa.</li>\n</ul>\n<p>Embora não esteja diretamente relacionado ao release, entendemos que, para receber mais contribuições da comunidade como a contribuição de Michael, precisamos comunicar nossas metas e prioridades abertamente e revisar as solicitações de recebimento de forma mais decisiva. Como primeiro passo, começamos a publicar novamente as <a href=\"https://github.com/reactjs/core-notes\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Notas da reunião semanal do React Core Team</a>. Também pretendemos introduzir um processo RFC inspirado nos <a href=\"https://github.com/emberjs/rfcs\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Ember RFCs</a> para que colaboradores externos possam ter mais conhecimento e influência no desenvolvimento futuro do React. Manteremos você atualizado sobre tudo em nosso blog.</p>\n<p>Também estamos experimentando um novo formato de registro de alterações neste post. Agora, todas as alterações são vinculadas à pull request correspondente e mencionam o autor. Se você vê utilidade nisso, fala pra gente.</p>\n<h2 id=\"upgrade-guide\"><a href=\"#upgrade-guide\" 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>Guia de Atualização </h2>\n<p>Como de costume em grandes releases, o React 15 removerá o suporte para alguns dos padrões descontinuados nove meses atrás no React 0.14. Sabemos que as alterações podem ser dolorosas (o código do Facebook tem mais de 20.000 componentes do React, isso sem contar do React Native). Por isso, sempre tentamos fazer alterações graduais para minimizar a dor.</p>\n<p>Se o seu código não apresentar avisos ao ser executado no React 0.14, a atualização deverá ser bem mais fácil. A maior parte das mudanças neste release estão realmente nos bastidores, impactando a maneira como o React interage com o DOM. A outra mudança substancial é que o React agora suporta toda a gama de elementos e atributos SVG. Além disso, temos um grande número de melhorias incrementais e avisos adicionais destinados a ajudar os desenvolvedores. Também solidificamos a nossa base para fornecer novos recursos em futuros releases.</p>\n<p>Veja o registro de mudanças abaixo para mais detalhes.</p>\n<h2 id=\"installation\"><a href=\"#installation\" 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>Instalação </h2>\n<p>Recomendamos a instalação  do React com o gerenciador de pacotes <code class=\"gatsby-code-text\">npm</code> e o uso de uma ferramenta como o browserify ou o webpack para criar o seu código em um único bundle. Para instalar os dois pacotes:</p>\n<ul>\n<li><code class=\"gatsby-code-text\">npm install --save react react-dom</code></li>\n</ul>\n<p>Lembre-se de que, por padrão, o React executa verificações extras e fornece avisos no modo de desenvolvimento. Ao fazer deploy do seu aplicativo, defina a variável de ambiente <code class=\"gatsby-code-text\">NODE_ENV</code> como<code class=\"gatsby-code-text\">production</code> para usar a construção de produção do React, que não inclui os avisos de desenvolvimento e executa mais rápido.</p>\n<p>Se você ainda não tem como usar o <code class=\"gatsby-code-text\">npm</code>, fornecemos versões pré-construídas do navegador para sua conveniência, que também estão disponíveis no pacote<code class=\"gatsby-code-text\">react</code> no navegador.</p>\n<ul>\n<li><strong>React</strong><br>\nVersão de desenvolvimento com avisos: <a href=\"https://fb.me/react-15.0.0.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-15.0.0.js</a><br>\nVersão minificada para producão: <a href=\"https://fb.me/react-15.0.0.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-15.0.0.min.js</a>  </li>\n<li><strong>React com Add-Ons</strong><br>\nVersão de desenvolvimento com avisos: <a href=\"https://fb.me/react-with-addons-15.0.0.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-with-addons-15.0.0.js</a><br>\nVersão minificada para producão: <a href=\"https://fb.me/react-with-addons-15.0.0.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-with-addons-15.0.0.min.js</a>  </li>\n<li><strong>React DOM</strong> (inclua React na página antes do React DOM)<br>\nVersão de desenvolvimento com aviso: <a href=\"https://fb.me/react-dom-15.0.0.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-dom-15.0.0.js</a><br>\nVersão minificada para producão: <a href=\"https://fb.me/react-dom-15.0.0.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://fb.me/react-dom-15.0.0.min.js</a>  </li>\n</ul>\n<h2 id=\"changelog\"><a href=\"#changelog\" 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>Changelog </h2>\n<h3 id=\"major-changes\"><a href=\"#major-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>Principais mudanças </h3>\n<ul>\n<li>\n<h4 id=\"documentcreateelement-é-mantido-e-data-reactid-está-fora\"><a href=\"#documentcreateelement-%C3%A9-mantido-e-data-reactid-est%C3%A1-fora\" 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><code class=\"gatsby-code-text\">document.createElement</code> é mantido e <code class=\"gatsby-code-text\">data-reactid</code> está fora</h4>\n<p>Aconteceram várias mudanças grandes na forma como interagimos com o DOM. Uma das mudanças mais notáveis é que não definimos mais o atributo <code class=\"gatsby-code-text\">data-reactid</code> para cada nó do DOM. Embora essa mudança torne mais difícil saber se um site está usando o React, a vantagem é que o DOM fica muito mais leve. Essa alteração foi possível ao escolhermos o uso de <code class=\"gatsby-code-text\">document.createElement</code> na renderização inicial. Anteriormente, gerávamos uma grande string de HTML e, em seguida, definíamos <code class=\"gatsby-code-text\">node.innerHTML</code>. Na época, decidiu-se que essa abordagem era mais rápida do que usar <code class=\"gatsby-code-text\">document.createElement</code> para a maioria dos casos e navegadores compatíveis. Mas os navegadores continuaram a melhorar tanto que a razão por trás da nossa abordagem inicial não é mais verdadeira. Ao usar <code class=\"gatsby-code-text\">createElement</code>, podemos fazer com que outras partes do React fiquem mais rápidas. Os IDs foram usados para mapear os eventos para o componente React original, o que significa que tínhamos que fazer muita coisa em todos os eventos, mesmo já tendo esses dados armazenados em cache. Como todos já vimos, o armazenamento em cache e, em particular, a invalidação de caches, podem ser propensos a erros e, como resultado, vimos muitos problemas difíceis de serem reproduzidos. Agora podemos construir um mapeamento direto no momento da renderização, já que já temos um identificador no nó.</p>\n<p>** Nota: ** <code class=\"gatsby-code-text\">data-reactid</code> ainda está presente no conteúdo renderizado pelo servidor, no entanto, é muito menor do que antes e é agora é simplesmente um contador de incremento automático.</p>\n<p><small><a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/5205\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5205</a></small></p>\n</li>\n<li>\n<h4 id=\"não-há-mais-span-s-extras\"><a href=\"#n%C3%A3o-h%C3%A1-mais-span-s-extras\" 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>Não há mais <code class=\"gatsby-code-text\">&lt;span&gt;</code> s extras</h4>\n<p>Outra grande mudança na nossa interação com o DOM é como processamos blocos de texto. Anteriormente, você deve ter notado que o React renderizava muitos <code class=\"gatsby-code-text\">&lt;span&gt;</code> s extras. Por exemplo, em nosso exemplo mais básico na página inicial, renderizamos <code class=\"gatsby-code-text\">&lt;div&gt; Olá {this.props.name} &lt;/div&gt;</code>, resultando em uma marcação que continha 2 <code class=\"gatsby-code-text\">&lt;span&gt;</code> s. Agora, renderizaremos nós de texto sem formatação intercaladas com nós de comentários usados para demarcação. Isso nos dá a capacidade de atualizar partes de texto individuais sem criar extras nós aninhados. Pouquíssimas pessoas dependiam da marcação gerada aqui; portanto, é provável que você não seja impactado. No entanto, se você estava direcionando esses <code class=\"gatsby-code-text\">&lt;span&gt;</code> s em seu CSS, precisará ajustar de acordo. Você sempre pode processá-los explicitamente em seus componentes.</p>\n<p><small><a href=\"https://github.com/mwiencek\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mwiencek</a> em <a href=\"https://github.com/facebook/react/pull/5753\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5753</a></small></p>\n</li>\n<li>\n<h4 id=\"renderizar-null-agora-usa-nós-de-comentários\"><a href=\"#renderizar-null-agora-usa-n%C3%B3s-de-coment%C3%A1rios\" 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>Renderizar <code class=\"gatsby-code-text\">null</code> agora usa nós de comentários</h4>\n<p>Também usamos esses nós de comentários para alterar o que o “null” renderiza. Renderizar <code class=\"gatsby-code-text\">null</code> foi um recurso que adicionamos no React 0.11 e foi implementado renderizando elementos<code class=\"gatsby-code-text\">&lt;noscript&gt;</code>. Ao renderizar os nós de comentários agora, é possível que partes do seu CSS estejam direcionando para o lugar errado, especificamente se você estiver usando os seletores <code class=\"gatsby-code-text\">: nth-child</code>. O uso do React da tag <code class=\"gatsby-code-text\">&lt;noscript&gt;</code> sempre foi considerado um detalhe de implementação de como o React segmenta o DOM. Acreditamos que essas são mudanças seguras a serem feitas que removem a necessidade de um release com avisos detalhando as diferenças sutis, visto que esses são detalhes dos quais não devemos depender. Além disso, vimos que essas alterações melhoraram o desempenho do React para muitos aplicativos.\n<small><a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/5451\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5451</a></small></p>\n</li>\n<li>\n<h4 id=\"componentes-de-função-agora-também-retornam-null\"><a href=\"#componentes-de-fun%C3%A7%C3%A3o-agora-tamb%C3%A9m-retornam-null\" 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>Componentes de função agora também retornam <code class=\"gatsby-code-text\">null</code></h4>\n<p>Adicionamos suporte para a <a href=\"/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components\">definição de componentes sem estado como funções</a> no React 0.14. No entanto, o React 0.14 ainda permitia que você definisse um componente de classe sem estender o <code class=\"gatsby-code-text\">React.Component</code> ou usando o <code class=\"gatsby-code-text\">React.createClass ()</code>, portanto [não dava para sabermos com segurança se o seu componente era uma função ou uma classe](<a href=\"https://github.com/facebook/react/issues/5355(https://github.com/facebook/react/issues/5355)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://github.com/facebook/react/issues/5355(https://github.com/facebook/react/issues/5355)</a>, além de não permitir <code class=\"gatsby-code-text\">null</code> como retorno. Esse problema foi resolvido no React 15 e agora você pode retornar <code class=\"gatsby-code-text\">null</code> de qualquer componente, seja o componente uma classe ou uma função.  </p>\n<p><small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5884\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5884</a></small></p>\n</li>\n<li>\n<h4 id=\"melhoria-no-suporte-para-svg\"><a href=\"#melhoria-no-suporte-para-svg\" 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>Melhoria no suporte para SVG</h4>\n<p>Agora há suporte para todas as tags SVG. (Tags SVG incomuns não estão presentes no auxiliar de elemento do <code class=\"gatsby-code-text\">React.DOM</code>, mas JSX e<code class=\"gatsby-code-text\">React.createElement</code> funcionam em todos os nomes de tags.) Todos os atributos SVG implementados pelos navegadores possuem suporte também. Se você encontrar algum atributo que negligenciamos, por favor <a href=\"https://github.com/facebook/react/issues/1657\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nos informe nesta issue</a>.  </p>\n<p><small><a href=\"https://github.com/zpao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zpao</a> em <a href=\"https://github.com/facebook/react/pull/6243\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6243</a></small></p>\n</li>\n</ul>\n<h3 id=\"breaking-changes\"><a href=\"#breaking-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 radicais </h3>\n<ul>\n<li>\n<h4 id=\"não-há-mais-span-s-extras-1\"><a href=\"#n%C3%A3o-h%C3%A1-mais-span-s-extras-1\" 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>Não há mais <code class=\"gatsby-code-text\">&lt;span&gt;</code> s extras</h4>\n<p>É bom ressaltar as alterações da estrutura do DOM que comentamos anteriormente mais uma vez, em particular a alteração que diz respeito aos <code class=\"gatsby-code-text\">&lt;span&gt;</code> s. Durante a atualização da base de código do Facebook, encontramos uma quantidade muito pequena de código que dependia da marcação que o React criava. Alguns desses cenários foram testes de integração como o WebDriver, que fazia consultas XPath muito específicas para direcionar nós. Outros eram simplesmente testes usando o <code class=\"gatsby-code-text\">ReactDOM.renderToStaticMarkup</code> e comparações de marcação. Novamente, houve um número muito pequeno de mudanças que precisavam ser feitas, mas não queremos que ninguém seja pego de surpresa. Incentivamos todos a executar seus conjuntos de testes ao atualizar e considerar abordagens alternativas sempre que possível. Uma abordagem que funcionará em alguns casos é usar explicitamente <code class=\"gatsby-code-text\">&lt;span&gt;</code> s no método <code class=\"gatsby-code-text\">render</code>.</p>\n<p><small><a href=\"https://github.com/mwiencek\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mwiencek</a> em <a href=\"https://github.com/facebook/react/pull/5753\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5753</a></small></p>\n</li>\n<li>\n<h4 id=\"reactcloneelement--agora-resolve-defaultprops\"><a href=\"#reactcloneelement--agora-resolve-defaultprops\" 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><code class=\"gatsby-code-text\">React.cloneElement ()</code> agora resolve <code class=\"gatsby-code-text\">defaultProps</code></h4>\n<p>Corrigimos um erro no <code class=\"gatsby-code-text\">React.cloneElement()</code> que pode afetar alguns componentes que dependiam dele. Se alguns dos <code class=\"gatsby-code-text\">props</code> recebidos por <code class=\"gatsby-code-text\">cloneElement()</code>são<code class=\"gatsby-code-text\">undefined</code>, a função costumava retornar um elemento com valores <code class=\"gatsby-code-text\">indefinidos</code> para esses props. No React 15, estamos mudando essa abordagem para que seja consistente com <code class=\"gatsby-code-text\">createElement()</code>. Agora, todos os objetos que são ‘undefined’ passados para <code class=\"gatsby-code-text\">cloneElement()</code> são resolvidos para os <code class=\"gatsby-code-text\">defaultProps</code> do componente correspondente. Somente um dos nossos 20.000 componentes do React foi afetado negativamente por essa mudança, por isso nos sentimos confortáveis em liberar essa alteração sem manter o comportamento antigo por outro ciclo de release.</p>\n<p><small><a href=\"https://github.com/truongduy134\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@truongduy134</a> em <a href=\"https://github.com/facebook/react/pull/5997\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5997</a></small></p>\n</li>\n<li>\n<h4 id=\"reactperfgetlastmeasurements-é-opaco\"><a href=\"#reactperfgetlastmeasurements-%C3%A9-opaco\" 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><code class=\"gatsby-code-text\">ReactPerf.getLastMeasurements()</code> é opaco</h4>\n<p>Essa alteração não afeta aplicativos, mas pode quebrar algumas ferramentas de terceiros. Estamos <a href=\"https://github.com/facebook/react/pull/6046\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">reformulando a implementação do ReactPerf</a> e planejamos lançá-lo durante o ciclo 15.x. O formato interno de medição de desempenho está sujeito a alterações, portanto, por enquanto, consideramos o valor de retorno de <code class=\"gatsby-code-text\">ReactPerf.getLastMeasurements()</code> uma estrutura de dados opaca que não deve ser confiável.</p>\n<p><small><a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/6286\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6286</a></small></p>\n</li>\n<li>\n<h4 id=\"\u0003remoção-de-deprecations\"><a href=\"#%03remo%C3%A7%C3%A3o-de-deprecations\" 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>\u0003Remoção de deprecations</h4>\n<p>Essas <code class=\"gatsby-code-text\">deprecations</code> foram introduzidas há nove meses na v0.14 com um aviso e agora estão removidas:</p>\n<ul>\n<li>APIs obsoletas foram removidas da exportação do nível superior do <code class=\"gatsby-code-text\">React</code>:  <code class=\"gatsby-code-text\">findDOMNode</code>,  <code class=\"gatsby-code-text\">render</code>, <code class=\"gatsby-code-text\">renderToString</code>, <code class=\"gatsby-code-text\">renderToStaticMarkup</code> e  <code class=\"gatsby-code-text\">unmountComponentAtNode</code>. Como lembrete, elas agora estão disponíveis no <code class=\"gatsby-code-text\">ReactDOM</code> e no  <code class=\"gatsby-code-text\">ReactDOMServer</code>.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5832\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5832</a></small></li>\n<li>Os addons obsoletos foram removidos: <code class=\"gatsby-code-text\">batchedUpdates</code> e <code class=\"gatsby-code-text\">cloneWithProps</code>.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5859\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5859</a>, <a href=\"https://github.com/zpao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zpao</a> em <a href=\"https://github.com/facebook/react/pull/6016\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6016</a></small></li>\n<li>Métodos de instância de componente obsoletos foram removidos: <code class=\"gatsby-code-text\">setProps</code>,<code class=\"gatsby-code-text\">replaceProps</code> e <code class=\"gatsby-code-text\">getDOMNode</code>.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5570\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5570</a></small></li>\n<li>O ponto de entrada obsoleto <code class=\"gatsby-code-text\">react/addons</code> do CommonJS foi removido. Como lembrete, você deve usar pacotes separados, por exemplo, <code class=\"gatsby-code-text\">react-addons- *</code>. Isso se aplica apenas se você usar os builds do CommonJS.\n<small><a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/6285\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6285</a></small></li>\n<li>Passar <code class=\"gatsby-code-text\">children</code> para elementos void como<code class=\"gatsby-code-text\">&lt;input&gt;</code> não é mais permitido e agora gera um erro.\n<small><a href=\"https://github.com/jonhester\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jonhester</a> em <a href=\"https://github.com/facebook/react/pull/3372\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#3372</a></small></li>\n<li>As propriedades específicas do React no DOM como <code class=\"gatsby-code-text\">refs</code> (por exemplo,  this.refs.div.props`) foram descontinuadas e foram removidas.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5495\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5495</a></small></li>\n</ul>\n</li>\n</ul>\n<h3 id=\"new-deprecations-introduced-with-a-warning\"><a href=\"#new-deprecations-introduced-with-a-warning\" 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>Novas deprecations, introduzidas com avisos </h3>\n<p>Cada uma dessas alterações continuará funcionando como antes com um novo aviso até o lançamento do React 16, para que você possa atualizar seu código gradualmente.</p>\n<ul>\n<li><code class=\"gatsby-code-text\">LinkedStateMixin</code> e<code class=\"gatsby-code-text\">valueLink</code> agora estão obsoletos devido à popularidade muito baixa. Se você precisar disso, poderá usar um componente wrapper que implemente o mesmo comportamento: <a href=\"https://www.npmjs.com/package/react-linked-input\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-linked-input</a>.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/6127\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6127</a></small></li>\n<li>Versões futuras do React tratarão <code class=\"gatsby-code-text\">&lt;input value={null}&gt;</code> como uma solicitação para limpar o input. No entanto, o React 0.14 está ignorando <code class=\"gatsby-code-text\">value={null}</code>. O React 15 alerta você sobre um valor de entrada <code class=\"gatsby-code-text\">null &#39;e lhe dá a opção de esclarecer sua intenção. Para corrigir o aviso, você pode passar explicitamente uma string vazia para limpar o input controlado ou passar</code>undefined` para tornar o input não controlado.\n<small><a href=\"https://github.com/antoaravinth\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@antoaravinth</a> em <a href=\"https://github.com/facebook/react/pull/5048\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5048</a></small></li>\n<li><code class=\"gatsby-code-text\">ReactPerf.printDOM()</code> foi renomeado para <code class=\"gatsby-code-text\">ReactPerf.printOperations()</code> e <code class=\"gatsby-code-text\">ReactPerf.getMeasurementsSummaryMap()</code> foi renomeado para <code class=\"gatsby-code-text\">ReactPerf.getWasted()</code>.\n<small><a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/6287\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6287</a></small></li>\n</ul>\n<h3 id=\"new-helpful-warnings\"><a href=\"#new-helpful-warnings\" 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>Novos avisos importantes </h3>\n<ul>\n<li>Se você usar uma cópia minificada do build de <em>development</em>, o React DOM o incentivará a usar o build mais rápido de produção.\n<small><a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/5083\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5083</a></small></li>\n<li>React DOM: Ao especificar um valor CSS sem unidade como uma string, uma versão futura não adicionará <code class=\"gatsby-code-text\">px</code> automaticamente. Esta versão agora avisa neste caso (por exemplo: escrevendo <code class=\"gatsby-code-text\">style = {{width: &#39;300&#39;}}</code>. Valores * unit * de número * como <code class=\"gatsby-code-text\">width: 300</code> permanecem inalterados.\n<small><a href=\"https://github.com/pluma\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@pluma</a> em <a href=\"https://github.com/facebook/react/pull/5140\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5140</a></small></li>\n<li>Os Eventos Sintéticos (Synthetic Events) agora avisam ao definir e acessar propriedades (que não serão limpas adequadamente), além de avisar sobre o acesso após o retorno de um evento ao pool.\n<small><a href=\"https://github.com/kentcdodds\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kentcdodds</a> em <a href=\"https://github.com/facebook/react/pull/5940\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5940</a> e <a href=\"https://github.com/koba04\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@koba04</a> em <a href=\"https://github.com/facebook/react/pull/5947\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5947</a></small></li>\n<li>Agora, os elementos avisarão ao tentar ler <code class=\"gatsby-code-text\">ref</code> e<code class=\"gatsby-code-text\">key</code> dos props.\n<small><a href=\"https://github.com/prometheansacrifice\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@prometheansacrifice</a> em <a href=\"https://github.com/facebook/react/pull/5744\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5744</a></small></li>\n<li>O React agora avisará se você passar um objeto <code class=\"gatsby-code-text\">props</code> diferente para o construtor <code class=\"gatsby-code-text\">super()</code>.\n<small><a href=\"https://github.com/prometheansacrifice\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@prometheansacrifice</a> em <a href=\"https://github.com/facebook/react/pull/5346\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5346</a></small></li>\n<li>O React agora avisará se você chamar <code class=\"gatsby-code-text\">setState()</code> dentro de <code class=\"gatsby-code-text\">getChildContext()</code>.\n<small><a href=\"https://github.com/raineroviir\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@raineroviir</a> em <a href=\"https://github.com/facebook/react/pull/6121\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6121</a></small></li>\n<li>O React DOM agora tenta avisar sobre manipulações de eventos com erros de digitação nos elementos DOM, como <code class=\"gatsby-code-text\">onclick</code>, que deve ser <code class=\"gatsby-code-text\">onClick</code>.\n<small><a href=\"https://github.com/ali\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ali</a> em <a href=\"https://github.com/facebook/react/pull/5361\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5361</a></small></li>\n<li>O React DOM agora alerta sobre os valores <code class=\"gatsby-code-text\">NaN</code> no<code class=\"gatsby-code-text\">style</code>.\n<small><a href=\"https://github.com/jontewks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jontewks</a> em <a href=\"https://github.com/facebook/react/pull/5811\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5811</a></small></li>\n<li>O React DOM agora avisa se você especificar <code class=\"gatsby-code-text\">value</code> e<code class=\"gatsby-code-text\">defaultValue</code> para um input.\n<small><a href=\"https://github.com/mgmcdermott\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mgmcdermott</a> em <a href=\"https://github.com/facebook/react/pull/5823\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5823</a></small></li>\n<li>O React DOM agora avisa se um input alterna entre ser controlado e não controlado.<br>\n<small><a href=\"https://github.com/TheBlasfem\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@TheBlasfem</a> em <a href=\"https://github.com/facebook/react/pull/5864\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5864</a></small></li>\n<li>O React DOM agora avisa se você especificar os manipuladores <code class=\"gatsby-code-text\">onFocusIn</code> ou <code class=\"gatsby-code-text\">onFocusOut</code>, pois eles são desnecessários no React.\n<small><a href=\"https://github.com/jontewks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jontewks</a> em <a href=\"https://github.com/facebook/react/pull/6296\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6296</a></small></li>\n<li>O React agora imprime uma mensagem de erro descritiva quando você passa callback inválido como o último argumento para <code class=\"gatsby-code-text\">ReactDOM.render()</code>, <code class=\"gatsby-code-text\">this.setState()</code> ou <code class=\"gatsby-code-text\">this.forceUpdate()</code>.\n<small><a href=\"https://github.com/conorhastings\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@conorhastings</a> em <a href=\"https://github.com/facebook/react/pull/5193\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5193</a> e <a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/6310\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6310</a></small></li>\n<li>Add-Ons: <code class=\"gatsby-code-text\">TestUtils.Simulate ()</code> agora imprime uma mensagem se você tentar usá-lo com renderização superficial.\n<small><a href=\"https://github.com/conorhastings\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@conorhastings</a> em <a href=\"https://github.com/facebook/react/pull/5358\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5358</a></small></li>\n<li>PropTypes: <code class=\"gatsby-code-text\">arrayOf()</code> e <code class=\"gatsby-code-text\">objectOf()</code> fornecem melhores mensagens de erro para argumentos inválidos.\n<small><a href=\"https://github.com/chicoxyzzy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chicoxyzzy</a> em <a href=\"https://github.com/facebook/react/pull/5390\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5390</a></small></li>\n</ul>\n<h3 id=\"notable-bug-fixes\"><a href=\"#notable-bug-fixes\" 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>Importantes correções de erros </h3>\n<ul>\n<li>Vários pequenos vazamentos de memória foram corrigidos.<br>\n<small><a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/4983\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4983</a> e <a href=\"https://github.com/victor-homyakov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@victor-homyakov</a> em <a href=\"https://github.com/facebook/react/pull/6309\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6309</a></small></li>\n<li>Eventos de entrada são tratados com mais confiabilidade no IE 10 e IE 11; eventos hipotéticos não são mais acionados quando usados com um placeholder.\n<small><a href=\"https://github.com/jquense\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jquense</a> em <a href=\"https://github.com/facebook/react/pull/4051\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4051</a></small></li>\n<li>O método do ciclo de vida <code class=\"gatsby-code-text\">componentWillReceiveProps()</code> agora é chamado consistentemente quando o <code class=\"gatsby-code-text\">context</code> é alterado.\n<small><a href=\"https://github.com/milesj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@milesj</a> em <a href=\"https://github.com/facebook/react/pull/5787\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5787</a></small></li>\n<li><code class=\"gatsby-code-text\">React.cloneElement()</code> não anexa barra a uma <code class=\"gatsby-code-text\">key</code> existente quando usado dentro de <code class=\"gatsby-code-text\">React.Children.map()</code>.\n<small><a href=\"https://github.com/ianobermiller\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ianobermiller</a> em <a href=\"https://github.com/facebook/react/pull/5892\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5892</a></small></li>\n<li>O React DOM agora suporta os atributos HTML <code class=\"gatsby-code-text\">cite</code> e<code class=\"gatsby-code-text\">profile</code>.\n<small><a href=\"https://github.com/AprilArcus\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@AprilArcus</a> em <a href=\"https://github.com/facebook/react/pull/6094\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6094</a> and <a href=\"https://github.com/saiichihashimoto\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@saiichihashimoto</a> em <a href=\"https://github.com/facebook/react/pull/6032\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6032</a></small></li>\n<li>O React DOM agora suporta as propriedades CSS <code class=\"gatsby-code-text\">cssFloat</code>,<code class=\"gatsby-code-text\">gridRow</code> e <code class=\"gatsby-code-text\">gridColumn</code>.\n<small><a href=\"https://github.com/stevenvachon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@stevenvachon</a> em <a href=\"https://github.com/facebook/react/pull/6133\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6133</a> and  <a href=\"https://github.com/mnordick\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mnordick</a> em <a href=\"https://github.com/facebook/react/pull/4779\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4779</a></small></li>\n<li>O React DOM agora manipula corretamente <code class=\"gatsby-code-text\">borderImageOutset</code>, <code class=\"gatsby-code-text\">borderImageWidth</code>, <code class=\"gatsby-code-text\">borderImageSlice</code>, <code class=\"gatsby-code-text\">floodOpacity</code>, <code class=\"gatsby-code-text\">strokeDasharray</code> e<code class=\"gatsby-code-text\">strokeMiterlimit</code> como propriedades CSS sem unidade.\n<small><a href=\"https://github.com/rofrischmann\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rofrischmann</a> em <a href=\"https://github.com/facebook/react/pull/6210\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6210</a> and <a href=\"https://github.com/facebook/react/pull/6270\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6270</a></small></li>\n<li>O React DOM agora suporta os eventos <code class=\"gatsby-code-text\">onAnimationStart</code>, <code class=\"gatsby-code-text\">onAnimationEnd</code>, <code class=\"gatsby-code-text\">onAnimationIteration</code>, <code class=\"gatsby-code-text\">onTransitionEnd</code> e <code class=\"gatsby-code-text\">onInvalid</code>. O suporte ao <code class=\"gatsby-code-text\">onLoad</code> foi adicionado aos elementos do <code class=\"gatsby-code-text\">object</code>.\n<small><a href=\"https://github.com/tomduncalf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tomduncalf</a> em <a href=\"https://github.com/facebook/react/pull/5187\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5187</a>,  <a href=\"https://github.com/milesj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@milesj</a> em <a href=\"https://github.com/facebook/react/pull/6005\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6005</a>, e <a href=\"https://github.com/ara4n\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ara4n</a> em <a href=\"https://github.com/facebook/react/pull/5781\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5781</a></small></li>\n<li>O React DOM agora usa como padrão atributos do DOM, em vez de propriedades, o que corrige alguns erros excepcionais. Além disso, a anulação de valores (ex: <code class=\"gatsby-code-text\">href = {null}</code>) agora resulta em uma remoção forçada, não mais tentando definir o valor padrão usado pelos navegadores na ausência de um valor.\n<small><a href=\"https://github.com/syranide\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@syranide</a> em <a href=\"https://github.com/facebook/react/pull/1510\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1510</a></small></li>\n<li>O React DOM não converte mais, por engano, <code class=\"gatsby-code-text\">children</code> para strings em Web Components.\n<small><a href=\"https://github.com/jimfb\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jimfb</a> em <a href=\"https://github.com/facebook/react/pull/5093\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5093</a></small></li>\n<li>O React DOM agora normaliza corretamente os eventos SVG <code class=\"gatsby-code-text\">&lt;use&gt;</code>.\n<small><a href=\"https://github.com/edmellum\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@edmellum</a> em <a href=\"https://github.com/facebook/react/pull/5720\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5720</a></small></li>\n<li>O React DOM não lança exceções se um <code class=\"gatsby-code-text\">&lt;select&gt;</code> for desmontado enquanto o manipulador <code class=\"gatsby-code-text\">onChange</code> estiver em execução.\n<small><a href=\"https://github.com/sambev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sambev</a> em <a href=\"https://github.com/facebook/react/pull/6028\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6028</a></small></li>\n<li>O React DOM não lança exceções em aplicativos do Windows 8.\n<small><a href=\"https://github.com/Andrew8xx8\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Andrew8xx8</a> em <a href=\"https://github.com/facebook/react/pull/6063\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6063</a></small></li>\n<li>O React DOM não lança exceções ao desmontar assincronamente um filho com um <code class=\"gatsby-code-text\">ref</code>.\n<small><a href=\"https://github.com/yiminghe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@yiminghe</a> em <a href=\"https://github.com/facebook/react/pull/6095\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6095</a></small></li>\n<li>O React DOM não força mais o layout síncrono devido ao rastreamento da posição do scroll.\n<small><a href=\"https://github.com/syranide\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@syranide</a> em <a href=\"https://github.com/facebook/react/pull/2271\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2271</a></small></li>\n<li><code class=\"gatsby-code-text\">Object.is</code> é usado em vários locais para comparar valores, o que leva a menos falsos positivos, especialmente envolvendo o<code class=\"gatsby-code-text\">NaN</code>. Em particular, isso afeta o add-on <code class=\"gatsby-code-text\">shallowCompare</code>.\n<small><a href=\"https://github.com/chicoxyzzy\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chicoxyzzy</a> em <a href=\"https://github.com/facebook/react/pull/6132\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6132</a></small></li>\n<li>Add-Ons: o ReactPerf não mais instrumenta adições ou remoções de event listener porque eles não tocam no DOM devido à delegação de eventos.\n<small><a href=\"https://github.com/antoaravinth\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@antoaravinth</a> em <a href=\"https://github.com/facebook/react/pull/5209\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5209</a></small></li>\n</ul>\n<h3 id=\"improvements\"><a href=\"#improvements\" 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> Outras melhorias </h3>\n<ul>\n<li>O React agora usa o <code class=\"gatsby-code-text\">loose-envify</code> em vez de <code class=\"gatsby-code-text\">envify</code> e por isso instala menos dependências transitivas.\n<small><a href=\"https://github.com/qerub\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@qerub</a> em <a href=\"https://github.com/facebook/react/pull/6303\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6303</a></small></li>\n<li>O renderizador raso agora expõe <code class=\"gatsby-code-text\">getMountedInstance()</code>.\n<small><a href=\"https://github.com/glenjamin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@glenjamin</a> em <a href=\"https://github.com/facebook/react/pull/4918\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4918</a></small></li>\n<li>O renderizador raso agora retorna a saída renderizada de <code class=\"gatsby-code-text\">render()</code>.\n<small><a href=\"https://github.com/simonewebdesign\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@simonewebdesign</a> em <a href=\"https://github.com/facebook/react/pull/5411\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5411</a></small></li>\n<li>React não depende mais do ES5 <em>shams</em> para <code class=\"gatsby-code-text\">Object.create</code> e <code class=\"gatsby-code-text\">Object.freeze</code> em ambientes antigos. No entanto, ainda requer  ES5 <em>shims</em> nesses ambientes.\n<small><a href=\"https://github.com/dgreensp\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dgreensp</a> em <a href=\"https://github.com/facebook/react/pull/4959\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#4959</a></small></li>\n<li>O React DOM agora permite atributos <code class=\"gatsby-code-text\">data-</code> com nomes que começam com números.\n<small><a href=\"https://github.com/nLight\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nLight</a> em <a href=\"https://github.com/facebook/react/pull/5216\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5216</a></small></li>\n<li>O React DOM adiciona um novo suporte <code class=\"gatsby-code-text\">suppressContentEditableWarning</code> para componentes como <a href=\"https://facebook.github.io/draft-js/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Draft.js</a> que gerenciam intencionalmente os filhos <code class=\"gatsby-code-text\">contentEditable</code> com o React.\n<small><a href=\"https://github.com/mxstbr\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mxstbr</a> em <a href=\"https://github.com/facebook/react/pull/6112\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#6112</a></small></li>\n<li>O React melhora o desempenho de <code class=\"gatsby-code-text\">createClass()</code> em especificações complexas.\n<small><a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/5550\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#5550</a></small></li>\n</ul>","excerpt":"Gostaríamos de agradecer à comunidade React por continuar relatando os problemas e regressões encontrados nos candidatos a release em nosso  registro de erros. Nas últimas semanas, corrigimos os problemas encontrados e, agora, após dois candidatos a release, estamos empolgados para finalmente lançar a versão estável do React 15. Como lembrete, estamos mudando para as principais versões para indicar que estamos usando o React em produção há muito tempo. O release 15.0 segue o 0.14 anterior e…","frontmatter":{"title":"React v15.0","next":null,"prev":null,"author":[{"frontmatter":{"name":"Dan Abramov","url":"https://twitter.com/dan_abramov"}}]},"fields":{"date":"07 de abril de 2016","path":"content/blog/2016-04-07-react-v15.md","slug":"/blog/2016/04/07/react-v15.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/2016/04/07/react-v15.html"}},"staticQueryHashes":[]}