{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2017/04/07/react-v15.5.0.html","result":{"data":{"markdownRemark":{"html":"<p>Faz exatamente um ano desde a última <em>breaking change</em> no React. Nossa próxima <em>major</em> release, React 16, irá incluir algumas melhorias excitantes, incluindo uma <a href=\"https://www.youtube.com/watch?v=ZCuYPiUIONs\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">reescrita completa</a> das partes internas do React. <a href=\"/docs/design-principles.html#stability\">Nós levamos estabilidade a sério</a> e somos comprometidos a trazer essas melhorias para todos os nossos usuários com o menor esforço.</p>\n<p>Por isso, hoje, estamos lançando React 15.5.0.</p>\n<h3 id=\"new-deprecation-warnings\"><a href=\"#new-deprecation-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>Avisos de Novas Descontinuações </h3>\n<p>A maior mudança é que extraímos <code class=\"gatsby-code-text\">React.PropTypes</code> e <code class=\"gatsby-code-text\">React.createClass</code> para seus próprios pacotes. Ambos estão acessíveis através do objeto principal <code class=\"gatsby-code-text\">React</code>, mas usar qualquer um irá causar em um aviso de descontinuação no console, quando estiver em ambiente de desenvolvimento. Isso irá habilitar futuras otimizações de tamanho de código.</p>\n<p>Esses avisos não irão afetar o comportamento da sua aplicação. Entretanto, nós sabemos que isso pode causar algumas frustrações, principalmente se você usa um <em>framework</em> de testes que trata <code class=\"gatsby-code-text\">console.error</code> como uma falha.</p>\n<p><strong>Adicionar avisos não é algo que fazemos levianamente.</strong> Avisos no React não são meras sugestões - eles são parte integral da nossa estratégia de deixar o maior número de pessoas com a última versão do React. Nós nunca adicionamos avisos sem prover um meio de seguir em frente.</p>\n<p>Então, enquanto esses avisos podem causar frustrações a curto prazo, nós acreditamos que <strong>incitando os os desenvolvedores a migrar suas bases de código agora, previni frustrações futuras</strong>. Arrumar avisos proativamente, garante que você está preparado para a próxima <em>major release</em>. Se a sua aplicação produz zero avisos na versão 15.5, deverá continuar funcionando na versão 16 sem precisar de mudanças.</p>\n<p>Para cada uma dessas novas descontinuações, nós oferecemos um <em>codemod</em> para migrar automaticamente o seu código. Eles estão disponíveis como parte do projeto <a href=\"https://github.com/reactjs/react-codemod\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-codemod</a>.</p>\n<h3 id=\"migrating-from-reactproptypes\"><a href=\"#migrating-from-reactproptypes\" 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>Migrando de React.PropTypes </h3>\n<p><em>Prop types</em> são funcionalidades para uma validação das <em>props</em> em tempo de execução, durante o desenvolvimento. Nós extraímos as <em>prop types</em> embutidas para um pacote separado, para refletir o fato de que nem todo mundo as utiliza.</p>\n<p>Na versão 15.5, em vez de acessar <code class=\"gatsby-code-text\">PropTypes</code> do objeto principal <code class=\"gatsby-code-text\">React</code>, instale o pacote <code class=\"gatsby-code-text\">prop-types</code> separadamente e as importe de lá:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Antes (15.4 ou anterior)</span>\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">Component</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 tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>text<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\nComponent<span class=\"token punctuation\">.</span>propTypes <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">  text<span class=\"token operator\">:</span> React<span class=\"token punctuation\">.</span>PropTypes<span class=\"token punctuation\">.</span>string<span class=\"token punctuation\">.</span>isRequired<span class=\"token punctuation\">,</span></span><span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Depois (15.5)</span>\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">import</span> PropTypes <span class=\"token keyword\">from</span> <span class=\"token string\">'prop-types'</span><span class=\"token punctuation\">;</span></span>\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">Component</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 tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>text<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\nComponent<span class=\"token punctuation\">.</span>propTypes <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">  text<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>string<span class=\"token punctuation\">.</span>isRequired<span class=\"token punctuation\">,</span></span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>O <a href=\"https://github.com/reactjs/react-codemod#react-proptypes-to-prop-types\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><em>codemod</em></a> para essas mudanças realiza essa conversão automaticamente. Basicamente use:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\">jscodeshift -t react-codemod/transforms/React-PropTypes-to-prop-types.js <span class=\"token operator\">&lt;</span>caminho<span class=\"token operator\">></span></code></pre></div>\n<p>As API’s de <code class=\"gatsby-code-text\">propTypes</code>, <code class=\"gatsby-code-text\">contextTypes</code>, e <code class=\"gatsby-code-text\">childContextTypes</code> irão funcionar exatamente como antes. A única mudança é que os validadores embutidos agora estão em um pacote separado.</p>\n<p>Você também pode considerar usar o <a href=\"https://flow.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Flow</a> para checar a tipagem estática do seu código JavaScript, incluindo <a href=\"https://flow.org/en/docs/react/components/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><em>React components</em></a>.</p>\n<h3 id=\"migrating-from-reactcreateclass\"><a href=\"#migrating-from-reactcreateclass\" 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>Migrando de React.createClass </h3>\n<p>Quando React foi lançado, não havia um jeito apropriado de criar classes em JavaScript, então nós fornecemos nosso próprio: <code class=\"gatsby-code-text\">React.createClass</code>.</p>\n<p>Mais tarde, classes foram adicionadas à linguagem como parte da ES2015, então nós adicionamos a capacidade de criar componentes React usando as classes do JavaScript. <strong>Junto de componentes funcionais, classes em JavaScript são o <a href=\"/docs/components-and-props.html#functional-and-class-components\">jeito desejável de criar componentes em React</a>.</strong></p>\n<p>Para os seus componentes que usam <code class=\"gatsby-code-text\">createClass</code>, nós recomendamos que você migre para as classes em JavaScript. Entretanto, se você tem componentes que dependem de <em>mixins</em>, convertê-los para classes pode não ser imediatamente factível. Então, <code class=\"gatsby-code-text\">create-react-class</code> está disponível no <em>npm</em> como um substituto.</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Antes (15.4 ou anterior)</span>\n<span class=\"token keyword\">var</span> React <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'react'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">var</span> Component <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createClass</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span></span>  mixins<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>MixinA<span class=\"token punctuation\">]</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 tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Child</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Depois (15.5)</span>\n<span class=\"token keyword\">var</span> React <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'react'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">var</span> createReactClass <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'create-react-class'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">var</span> Component <span class=\"token operator\">=</span> <span class=\"token function\">createReactClass</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span></span>  mixins<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>MixinA<span class=\"token punctuation\">]</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 tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Child</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Seus componentes vão continuar funcionando como estavam anteriormente.</p>\n<p>O <a href=\"https://github.com/reactjs/react-codemod#explanation-of-the-new-es2015-class-transform-with-property-initializers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">codemod</a> para essas mudanças tenta converter um componente que usa <code class=\"gatsby-code-text\">createClass</code> para uma classe em JavaScript, com um <em>fallback</em> para  <code class=\"gatsby-code-text\">create-react-class</code> se necessário. Isso já foi usado para converter milahres de componentes internamente no Facebook.</p>\n<p>Modo de Usar:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\">jscodeshift -t react-codemod/transforms/class.js caminho/para/componentes</code></pre></div>\n<h3 id=\"discontinuing-support-for-react-addons\"><a href=\"#discontinuing-support-for-react-addons\" 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>Suspensão do Suporte Para React <em>Addons</em> </h3>\n<p>Nós estamos suspendendo a manutenção ativa dos pacotes React <em>Addons</em>. De fato, muitos desses pacotes não estão sendo mantidos ativamente há muito tempo. Eles continuarão funcionando por tempo indeterminado, mas nós recomendamos removê-los o mais rápido possível para prevenir problemas futuros.</p>\n<ul>\n<li><strong>react-addons-create-fragment</strong> – React 16 terá suporte de primeira classe para fragmentos, a um ponto em que esse pacote não será mais necessário. Por outro lado, nós recomendamos usar <em>arrays</em> com elementos com chaves.</li>\n<li><strong>react-addons-css-transition-group</strong> - Usar <a href=\"https://github.com/reactjs/react-transition-group\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-transition-group/CSSTransitionGroup</a> como alternativa. A versão 1.1.1 fornece um substituto.</li>\n<li><strong>react-addons-linked-state-mixin</strong> - Explicitamente coloque os <em>handlers</em> <code class=\"gatsby-code-text\">value</code> e <code class=\"gatsby-code-text\">onChange</code> como alternativa.</li>\n<li><strong>react-addons-pure-render-mixin</strong> - Use <a href=\"/docs/react-api.html#reactpurecomponent\"><code class=\"gatsby-code-text\">React.PureComponent</code></a> como alternativa.</li>\n<li><strong>react-addons-shallow-compare</strong> - Use <a href=\"/docs/react-api.html#reactpurecomponent\"><code class=\"gatsby-code-text\">React.PureComponent</code></a> como alternativa.</li>\n<li><strong>react-addons-transition-group</strong> - Use <a href=\"https://github.com/reactjs/react-transition-group\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-transition-group/TransitionGroup</a> como alternativa. A versão 1.1.1 fornece um substituto.</li>\n<li><strong>react-addons-update</strong> - Use <a href=\"https://github.com/kolodny/immutability-helper\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">immutability-helper</a> como alternativa.</li>\n<li><strong>react-linked-input</strong> - Explicitamente coloque os <em>handlers</em> <code class=\"gatsby-code-text\">value</code> e <code class=\"gatsby-code-text\">onChange</code> como alternativa.</li>\n</ul>\n<p>Nós também estamos descontinuando o suporte para a <em>build UMD</em> <code class=\"gatsby-code-text\">react-with-addons</code>. Ela será removida na versão 16 do React.</p>\n<h3 id=\"react-test-utils\"><a href=\"#react-test-utils\" 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 Test Utils </h3>\n<p>Atualmente, <em>React Test Utils</em> está dentro de <code class=\"gatsby-code-text\">react-addons-test-utils</code>. Como outras coisas da versão 15.5, nós estamos descontinuando o pacote e movendo-o para <code class=\"gatsby-code-text\">react-dom/test-utils</code> como alternativa:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Antes (15.4 ou anterior)</span>\n<span class=\"token keyword\">import</span> TestUtils <span class=\"token keyword\">from</span> <span class=\"token string\">'react-addons-test-utils'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Depois (15.5)</span>\n<span class=\"token keyword\">import</span> TestUtils <span class=\"token keyword\">from</span> <span class=\"token string\">'react-dom/test-utils'</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Isso reflete o fato de que importar todas as <em>Test Utils</em> são um conjunto de <em>API’s</em> que englobam o renderizador da DOM.</p>\n<p>A exceção é a renderização superficial, que não utiliza a DOM. A Renderização superficial foi movida para <code class=\"gatsby-code-text\">react-test-renderer/shallow</code>.</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Antes (15.4 ou anterior)</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> createRenderer <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react-addons-test-utils'</span><span class=\"token punctuation\">;</span></span>\n<span class=\"token comment\">// Depois (15.5)</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> createRenderer <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react-test-renderer/shallow'</span><span class=\"token punctuation\">;</span></span></code></pre></div>\n<hr>\n<h2 id=\"acknowledgements\"><a href=\"#acknowledgements\" 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>Agradecimentos </h2>\n<p>Um grande agradecimento para essas pessoas que transferiram o domínio dos pacotes no <em>npm</em>:</p>\n<ul>\n<li><a href=\"https://github.com/developit\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jason Miller</a></li>\n<li><a href=\"https://github.com/aackerman\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Aaron Ackerman</a></li>\n<li><a href=\"https://github.com/viniciusmarson\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Vinicius Marson</a></li>\n</ul>\n<hr>\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>Nós recomendamos usar o <a href=\"https://yarnpkg.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Yarn</a> ou <a href=\"https://www.npmjs.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">npm</a> para o gerenciamento de dependências do front-end. Se você não conhece muito sobre gerenciadores de pacotes, a <a href=\"https://yarnpkg.com/en/docs/getting-started\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">documentação do Yarn</a> é um bom lugar para começar.</p>\n<p>Para instalar React usando Yarn, execute:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\"><span class=\"token function\">yarn</span> <span class=\"token function\">add</span> react@^15.5.0 react-dom@^15.5.0</code></pre></div>\n<p>Para instalar React usando npm, execute:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> --save react@^15.5.0 react-dom@^15.5.0</code></pre></div>\n<p>Nós recomendamos usar um compilador como <a href=\"https://webpack.js.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">webpack</a> ou <a href=\"http://browserify.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Browserify</a> para que você consiga escrever um código modular e compilar tudo em pacotes pequenos e com tempo de carregamento otimizados.</p>\n<p>Lembre que por padrão, React roda checagens extras e provê avisos úteis no modo de desenvolvimento. Quando fazer <em>deploy</em> da sua aplicação, lembre de <a href=\"/docs/installation.html#development-and-production-versions\">compilar em modo de produção</a>.</p>\n<p>No caso de voê não usar um compilador, nós oferecemos compilações pré-instaladas nos pacotes do npm que podem ser <a href=\"/docs/installation.html#using-a-cdn\">incluídas como tags script</a> na sua página:</p>\n<ul>\n<li><strong>React</strong><br>\nCompilação para o modo de desenvolvimento com avisos: <a href=\"https://unpkg.com/react@15.5.0/dist/react.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react/dist/react.js</a><br>\nCompilação minificada para produção: <a href=\"https://unpkg.com/react@15.5.0/dist/react.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react/dist/react.min.js</a>  </li>\n<li><strong>React com Add-Ons</strong><br>\nCompilação para o modo de desenvolvimento com avisos: <a href=\"https://unpkg.com/react@15.5.0/dist/react-with-addons.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react/dist/react-with-addons.js</a><br>\nCompilação minificada para produção: <a href=\"https://unpkg.com/react@15.5.0/dist/react-with-addons.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react/dist/react-with-addons.min.js</a>  </li>\n<li><strong>React DOM</strong> (inclui React na página antes do React DOM)<br>\nCompilação para o modo de desenvolvimento com avisos: <a href=\"https://unpkg.com/react-dom@15.5.0/dist/react-dom.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-dom/dist/react-dom.js</a><br>\nCompilação minificada para produção: <a href=\"https://unpkg.com/react-dom@15.5.0/dist/react-dom.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-dom/dist/react-dom.min.js</a>  </li>\n<li><strong>React DOM Server</strong> (inclui React na página antes do React DOM Server)<br>\nCompilação para o modo de desenvolvimento com avisos: <a href=\"https://unpkg.com/react-dom@15.5.0/dist/react-dom-server.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-dom/dist/react-dom-server.js</a><br>\nCompilação minificada para produção: <a href=\"https://unpkg.com/react-dom@15.5.0/dist/react-dom-server.min.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">react-dom/dist/react-dom-server.min.js</a></li>\n</ul>\n<p>Nós também publicamos as versões <code class=\"gatsby-code-text\">15.5.0</code> dos pacotes <code class=\"gatsby-code-text\">react</code>, <code class=\"gatsby-code-text\">react-dom</code> e <em>addons</em> no <em>npm</em> e o pacote <code class=\"gatsby-code-text\">react</code> no bower.</p>\n<hr>\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<h2 id=\"1550-april-7-2017\"><a href=\"#1550-april-7-2017\" 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>15.5.0 (7 de Abril de 2017) </h2>\n<h3 id=\"react\"><a href=\"#react\" 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 </h3>\n<ul>\n<li>Adicionado aviso de descontinuação para <code class=\"gatsby-code-text\">React.createClass</code>. Sugere o uso de <em>create-react-class</em> como alternativa. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/commit/d9a4fa4f51c6da895e1655f32255cf72c0fe620e\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">d9a4fa4</a>)</li>\n<li>Adicionado aviso de descontinuação para <code class=\"gatsby-code-text\">React.PropTypes</code>. Sugere o uso de <em>prop-types</em> como alternativa. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/commit/043845ce75ea0812286bbbd9d34994bb7e01eb28\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">043845c</a>)</li>\n<li>Consertado um problema quando usando <code class=\"gatsby-code-text\">ReactDOM</code> junto com <code class=\"gatsby-code-text\">ReactDOMServer</code>. (<a href=\"https://github.com/wacii\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@wacii</a> em <a href=\"https://github.com/facebook/react/pull/9005\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#9005</a>)</li>\n<li>Consertado problema com <em>Closure Compiler</em>. (<a href=\"https://github.com/anmonteiro\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anmonteiro</a> em <a href=\"https://github.com/facebook/react/pull/8895\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#8895</a>)</li>\n<li>Outro conserto para o <em>Closure Compiler</em>. (<a href=\"https://github.com/Shastel\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Shastel</a> em <a href=\"https://github.com/facebook/react/pull/8882\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#8882</a>)</li>\n<li>Adicionada pilha de informações de componentes para avisos de tipo de elemento inválido. (<a href=\"https://github.com/n3tr\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@n3tr</a> em <a href=\"https://github.com/facebook/react/pull/8495\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#8495</a>)</li>\n</ul>\n<h3 id=\"react-dom\"><a href=\"#react-dom\" 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 DOM </h3>\n<ul>\n<li>Consertado bug no Chrome na deleção em inputs de número. (<a href=\"https://github.com/nhunzaker\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nhunzaker</a> em <a href=\"https://github.com/facebook/react/pull/7359\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#7359</a>)</li>\n<li>Adicionado <code class=\"gatsby-code-text\">react-dom/test-utils</code>, que exporta o React Test Utils. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a>)</li>\n</ul>\n<h3 id=\"react-test-renderer\"><a href=\"#react-test-renderer\" 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 Test Renderer </h3>\n<ul>\n<li>Consertado bug onde <code class=\"gatsby-code-text\">componentWillUnmount</code> não era chamado para <em>children</em>. (<a href=\"https://github.com/gre\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gre</a> em <a href=\"https://github.com/facebook/react/pull/8512\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#8512</a>)</li>\n<li>Adicionado <code class=\"gatsby-code-text\">react-test-renderer/shallow</code>, que exporta a renderização superficial. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a>)</li>\n</ul>\n<h3 id=\"react-addons\"><a href=\"#react-addons\" 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 Addons </h3>\n<ul>\n<li>Última versão para os <em>addons</em>; eles não serão mais mantidos ativamente.</li>\n<li>Removidos <code class=\"gatsby-code-text\">peerDependencies</code> para que os <em>addons</em> continuem funcionando indeterminadamente. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> e <a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> em <a href=\"https://github.com/facebook/react/commit/8a06cd7a786822fce229197cac8125a551e8abfa\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">8a06cd7</a> e <a href=\"https://github.com/facebook/react/commit/67a8db3650d724a51e70be130e9008806402678a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">67a8db3</a>)</li>\n<li>Atualizado para remover referências de <code class=\"gatsby-code-text\">React.createClass</code> e <code class=\"gatsby-code-text\">React.PropTypes</code> (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/commit/12a96b94823d6b6de6b1ac13bd576864abd50175\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">12a96b9</a>)</li>\n<li><code class=\"gatsby-code-text\">react-addons-test-utils</code> está descontinuado. Use <code class=\"gatsby-code-text\">react-dom/test-utils</code> e <code class=\"gatsby-code-text\">react-test-renderer/shallow</code> como alternativa. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a>)</li>\n</ul>","excerpt":"Faz exatamente um ano desde a última breaking change no React. Nossa próxima major release, React 16, irá incluir algumas melhorias excitantes, incluindo uma reescrita completa das partes internas do React. Nós levamos estabilidade a sério e somos comprometidos a trazer essas melhorias para todos os nossos usuários com o menor esforço. Por isso, hoje, estamos lançando React 15.5.0. Avisos de Novas Descontinuações  A maior mudança é que extraímos  e  para seus próprios pacotes. Ambos estão…","frontmatter":{"title":"React v15.5.0","next":null,"prev":null,"author":[{"frontmatter":{"name":"Andrew Clark","url":"https://twitter.com/acdlite"}}]},"fields":{"date":"07 de abril de 2017","path":"content/blog/2017-04-07-react-v15.5.0.md","slug":"/blog/2017/04/07/react-v15.5.0.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/2017/04/07/react-v15.5.0.html"}},"staticQueryHashes":[]}