{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2019/02/06/react-v16.8.0.html","result":{"data":{"markdownRemark":{"html":"<p>Com o React 16.8, <a href=\"/docs/hooks-intro.html\">React Hooks</a> tornam-se disponíveis em sua versão estável!</p>\n<h2 id=\"what-are-hooks\"><a href=\"#what-are-hooks\" 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>O Que São Hooks? </h2>\n<p>Hooks lhe permite utilizar estado e outras funcionalidades do React sem a necessidade de escrever uma classe. Assim como, você também pode <strong>criar o seus próprios Hooks</strong> para compartilhar e reutilizar sua lógica com estado entre componentes.</p>\n<p>Se você nunca ouviu falar sobre Hooks antes, talvez você ache estes tópicos interessantes:</p>\n<ul>\n<li><a href=\"/docs/hooks-intro.html\">Introduzindo Hooks</a> explica porque nós estamos adicionando Hooks ao React.</li>\n<li><a href=\"/docs/hooks-overview.html\">Hooks de Forma Resumida</a> é uma visão geral sobre o Hooks.</li>\n<li><a href=\"/docs/hooks-custom.html\">Criando Seus Próprios Hooks</a> demonstra como reutilizar de código utilizando Hooks personalizados.</li>\n<li><a href=\"https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">O Sentido do React Hooks</a> explora as novas possibilidades com Hooks.</li>\n<li><a href=\"https://usehooks.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">useHooks.com</a> apresenta Hooks mantidos pela comunidade e suas implementações.</li>\n</ul>\n<p><strong>Você não precisa aprender Hooks agora.</strong> Hooks não quebra aplicações existentes, e nós não temos planos de remover o uso de classes do React. O <a href=\"/docs/hooks-faq.html\">Hooks FAQ</a> descreve à adoção gradual da estratégia.</p>\n<h2 id=\"no-big-rewrites\"><a href=\"#no-big-rewrites\" 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>Sem Grandes Reescritas </h2>\n<p>Não recomendamos que você reescreva suas aplicações existentes, apenas para utilizar Hooks de uma hora para outra. Pelo contrário, tente utilizar Hooks em alguns de seus novos componentes, e deixe-nos saber o que você acha. Desenvolver utlizando Hooks, funcionará <a href=\"/docs/hooks-intro.html#gradual-adoption-strategy\">lado a lado</a> ao código já existente qual faz uso de classes.</p>\n<h2 id=\"can-i-use-hooks-today\"><a href=\"#can-i-use-hooks-today\" 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>Posso usar Hooks hoje? </h2>\n<p>Sim! Iniciando com a versão 16.8.0, o React inclui a versão estável da implementação do React Hooks para:</p>\n<ul>\n<li>React DOM</li>\n<li>React DOM Servidor (React DOM Server)</li>\n<li>Renderizador de Teste React (React Test Renderer)</li>\n<li>Renderizador Superficial React (React Shallow Renderer)</li>\n</ul>\n<p>Observe que <strong>para utilizar Hooks, todos os pacotes do React precisam estar na versão 16.8.0 ou superior</strong>. Hooks não irão funcionar se você esquecer de atualizar, por exemplo, o React DOM.</p>\n<p><strong>O React Native terá suporte ao Hooks na <a href=\"https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">versão 0.59</a>.</strong></p>\n<h2 id=\"tooling-support\"><a href=\"#tooling-support\" 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>Suporte de Ferramentas </h2>\n<p>React Hooks agora são suportados pelo React DevTools. Assim como, as últimas definições de Flow e TypeScript do React. Nós recomendamos fortemente a utilização da <a href=\"https://www.npmjs.com/package/eslint-plugin-react-hooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nova regra lint, chamada: <code class=\"gatsby-code-text\">eslint-plugin-react-hooks</code></a>, para a aplicação das melhores práticas de codificação com Hooks. Em breve, ela será incluída ao Create React App por padrão. </p>\n<h2 id=\"whats-next\"><a href=\"#whats-next\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>O Que Vem a Seguir </h2>\n<p>Nós descrevemos nossos planos para os próximos meses na recente publicação do <a href=\"/blog/2018/11/27/react-16-roadmap.html\">Roteiro React</a>. </p>\n<p>Observe que React Hooks ainda não cobrem <em>todos</em> os casos de uso de classes, mas eles estão <a href=\"/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes\">bem próximos</a>. Atualmente, apenas os métodos que não possuem API de Hooks equivalentes são <code class=\"gatsby-code-text\">getSnapshotBeforeUpdate()</code> e <code class=\"gatsby-code-text\">componentDidCatch()</code>, estes ciclos de vida são relativamentes incomuns. Se você quiser, você deve conseguir utilizar Hooks em grande parte do novo código qual você está escrevendo.</p>\n<p>Mesmo enquanto Hooks estavam em sua versão alpha, a comunidade React criou muitos <a href=\"https://codesandbox.io/react-hooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">exemplos</a> e <a href=\"https://usehooks.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">indicações</a> interessantes usando Hooks, seja para animações, formulários, subscriptions, integração com outras bibliotecas e assim por diante. Nós estamos entusiasmados com Hooks, porque eles tornam a reutilização de código mais fácil, ajudando você a escrever seus componentes de forma simples e criando grandes experiências de usuário. Não podemos esperar para ver o que você irá criar em seguida!</p>\n<h2 id=\"testing-hooks\"><a href=\"#testing-hooks\" 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>Testando os Hooks </h2>\n<p>Nós adicionamos uma nova API nesta versão, chamada <code class=\"gatsby-code-text\">ReactTestUtils.act()</code>. Ela garante que o comportamento de seus testes, correspondam de forma mais semelhante com o que acontece no navegador. Nós recomendamos encapsular quaquer código de renderização e execução de atualizações ao seu componente, dentro das chamadas aos métodos <code class=\"gatsby-code-text\">act()</code>. Bibliotecas de teste, do mesmo modo, podem encapsular suas APIs com o método (por exemplo: utilitários do <a href=\"https://testing-library.com/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react-testing-library</code></a>, como <code class=\"gatsby-code-text\">render</code> e <code class=\"gatsby-code-text\">fireEvent</code>, fazem isto).</p>\n<p>Por exemplo, o exemplo de contador <a href=\"/docs/hooks-effect.html\">desta página</a> pode ser testado assim:</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 keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> ReactDOM <span class=\"token keyword\">from</span> <span class=\"token string\">'react-dom'</span><span class=\"token punctuation\">;</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> act <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react-dom/test-utils'</span><span class=\"token punctuation\">;</span></span><span class=\"token keyword\">import</span> Counter <span class=\"token keyword\">from</span> <span class=\"token string\">'./Counter'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">let</span> container<span class=\"token punctuation\">;</span>\n\n<span class=\"token function\">beforeEach</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  container <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">createElement</span><span class=\"token punctuation\">(</span><span class=\"token string\">'div'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  document<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">.</span><span class=\"token function\">appendChild</span><span class=\"token punctuation\">(</span>container<span class=\"token punctuation\">)</span><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 function\">afterEach</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  document<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">.</span><span class=\"token function\">removeChild</span><span class=\"token punctuation\">(</span>container<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  container <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><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 function\">it</span><span class=\"token punctuation\">(</span><span class=\"token string\">'can render and update a counter'</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// Testa primeira renderização e resultado</span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token function\">act</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span></span><span class=\"gatsby-highlight-code-line\">    ReactDOM<span class=\"token punctuation\">.</span><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Counter</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">,</span> container<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token keyword\">const</span> button <span class=\"token operator\">=</span> container<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span><span class=\"token string\">'button'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">const</span> label <span class=\"token operator\">=</span> container<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span><span class=\"token string\">'p'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">expect</span><span class=\"token punctuation\">(</span>label<span class=\"token punctuation\">.</span>textContent<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBe</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Você clicou 0 vezes'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">expect</span><span class=\"token punctuation\">(</span>document<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBe</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Você clicou 0 vezes'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token comment\">// Testa segunda renderização e resultado</span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token function\">act</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span></span><span class=\"gatsby-highlight-code-line\">    button<span class=\"token punctuation\">.</span><span class=\"token function\">dispatchEvent</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">MouseEvent</span><span class=\"token punctuation\">(</span><span class=\"token string\">'click'</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>bubbles<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token function\">expect</span><span class=\"token punctuation\">(</span>label<span class=\"token punctuation\">.</span>textContent<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBe</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Você clicou 1 vezes'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">expect</span><span class=\"token punctuation\">(</span>document<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBe</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Você clicou 1 vezes'</span><span class=\"token punctuation\">)</span><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>As chamadas ao método <code class=\"gatsby-code-text\">act()</code> também irão disparar os efeitos dentro delas.</p>\n<p>Se você precisa testar um Hook customizado, você pode fazer isso criando um componente em seu teste e utilizar seu Hook a partir dele. Assim, você pode testar o componente qual você escreveu.</p>\n<p>Para reduzir a repetição, nós recomendamos utilizar a <a href=\"https://testing-library.com/react\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><code class=\"gatsby-code-text\">react-testing-library</code></a>, qual é projetada para incentivar a escrita de testes, que utilizam de seus componentes como o usuário final utiliza.</p>\n<h2 id=\"thanks\"><a href=\"#thanks\" 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>Agradecimento </h2>\n<p>Nós gostaríamos de agradecer todos aqueles que comentaram no <a href=\"https://github.com/reactjs/rfcs/pull/68\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hooks RFC</a>, por terem compartilhado suas opiniões. Nós lemos todos os seus comentários e fizemos alguns ajustes finais nas APIs baseando-se neles. </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<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<p>O React v16.8.0 está disponível no registro do npm.</p>\n<p>Para instalar o React 16 com o 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@^16.8.0 react-dom@^16.8.0</code></pre></div>\n<p>Para instalar o React 16 com o 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@^16.8.0 react-dom@^16.8.0</code></pre></div>\n<p>Nós também fornecemos compilações UMD do React via CDN:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">crossorigin</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@16/umd/react.production.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">crossorigin</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@16/umd/react-dom.production.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Consulte a documentação para <a href=\"/docs/installation.html\">instruções de instalações detalhadas</a>.</p>\n<h3 id=\"eslint-plugin-for-react-hooks\"><a href=\"#eslint-plugin-for-react-hooks\" 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>Extensão ESLint para o React Hooks </h3>\n<blockquote>\n<p>Observação</p>\n<p>Como mencionado acima, nós recomendamos severamente o uso da regra do <code class=\"gatsby-code-text\">eslint-plugin-react-hooks</code>.</p>\n<p>Se você está usando o Create React App, ao invéz da configuração manual do ESLint, você pode aguardar pela próxima versão do <code class=\"gatsby-code-text\">react-scrips</code>, qual será lançada em breve e irá incluir esta regra.</p>\n</blockquote>\n<p>Assumindo que você já possui o ESLint instalado, excute:</p>\n<div class=\"gatsby-highlight\" data-language=\"sh\"><pre class=\"gatsby-code-sh\"><code class=\"gatsby-code-sh\"># npm\nnpm install eslint-plugin-react-hooks --save-dev\n\n# yarn\nyarn add eslint-plugin-react-hooks --dev</code></pre></div>\n<p>Então adicione em suas confugações do ESLint:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"plugins\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token comment\">// ...</span>\n    <span class=\"token string\">\"react-hooks\"</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"rules\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// ...</span>\n    <span class=\"token string\">\"react-hooks/rules-of-hooks\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"error\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\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>Histórico de Mudanças </h2>\n<h3 id=\"react-1\"><a href=\"#react-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>React </h3>\n<ul>\n<li>Adiciona <a href=\"https://reactjs.org/docs/hooks-intro.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hooks</a> — uma forma de utilizar estado e outras funcionalidades do React sem escrever uma classe. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> et al. em <a href=\"https://github.com/facebook/react/pull/13968\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13968</a>)</li>\n<li>Aperfeiçoamento da API de inicialização lenta (lazy initialization) do Hook <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14723\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14723</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>Evita renderização de valores identicos nos Hooks <code class=\"gatsby-code-text\">useState</code> e <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14569\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14569</a>)</li>\n<li>Não compare o primeiro argumento passado aos Hooks <code class=\"gatsby-code-text\">useEffect</code>/<code class=\"gatsby-code-text\">useMemo</code>/<code class=\"gatsby-code-text\">useCallback</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14594\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14594</a>)</li>\n<li>Utilização do algortimo <code class=\"gatsby-code-text\">Object.is</code> para comparação dos valores de <code class=\"gatsby-code-text\">useState</code> e <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/Jessidhia\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Jessidhia</a> em <a href=\"https://github.com/facebook/react/pull/14752\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14752</a>)</li>\n<li>Suporte síncrono aos thenables passados para <code class=\"gatsby-code-text\">React.lazy()</code>. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/14626\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14626</a>)</li>\n<li>Renderiza os componentes com Hooks duas vezes no Modo Estrito (Strict Mode) - apenas DEV, para combinar o comportamento de classe. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/14654\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14654</a>)</li>\n<li>Aviso sobre a incompatibilidade do Hooks quanto ao desenvolvimento. (<a href=\"https://github.com/threepointone\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@threepointone</a> em <a href=\"https://github.com/facebook/react/pull/14585\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14585</a> e <a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14591\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14591</a>)</li>\n<li>As funções de limpeza de resultados devem retornar <code class=\"gatsby-code-text\">undefined</code> ou uma função. Todos os outros valores, incluindo <code class=\"gatsby-code-text\">null</code>, não são permitidos. <a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14119\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14119</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>Renderizador de Teste React </h3>\n<ul>\n<li>Suporte para Hooks no renderizador superficial (Shallow Renderer). (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> em <a href=\"https://github.com/facebook/react/pull/14567\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14567</a>)</li>\n<li>Correção do estado do <code class=\"gatsby-code-text\">shouldComponentUpdate</code> junto ao <code class=\"gatsby-code-text\">getDerivedStateFromProps</code> ao renderizador superficial (Shallow Renderer). (<a href=\"https://github.com/chenesan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chenesan</a> em <a href=\"https://github.com/facebook/react/pull/14613\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14613</a>)</li>\n<li>Adiciona <code class=\"gatsby-code-text\">ReactTestRenderer.act()</code> e <code class=\"gatsby-code-text\">ReactTestUtils.act()</code> para atualizações em lote a fim de que testes sejam executados de forma mais semelhante ao comportamento real. (<a href=\"https://github.com/threepointone\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@threepointone</a> em <a href=\"https://github.com/facebook/react/pull/14744\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14744</a>)</li>\n</ul>\n<h3 id=\"eslint-plugin-react-hooks\"><a href=\"#eslint-plugin-react-hooks\" 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>Extensão ESLint: React Hooks </h3>\n<ul>\n<li><a href=\"https://www.npmjs.com/package/eslint-plugin-react-hooks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Lançamento</a> inicial. (<a href=\"https://github.com/calebmer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@calebmer</a> em <a href=\"https://github.com/facebook/react/pull/13968\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13968</a>)</li>\n<li>Correção do relatório após encontrar ciclo. (<a href=\"https://github.com/calebmer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@calebmer</a> e <a href=\"https://github.com/Yurickh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Yurickh</a> em <a href=\"https://github.com/facebook/react/pull/14661\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14661</a>)</li>\n<li>Não considere lançamento de exceção como uma violação de regra. (<a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/14040\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14040</a>)</li>\n</ul>\n<h2 id=\"hooks-changelog-since-alpha-versions\"><a href=\"#hooks-changelog-since-alpha-versions\" 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>Histórico de mudanças do Hooks desde a versão alpha </h2>\n<p>O histórico de mudanças acima contém todas as mudanças notáveis, desde a nossa última versão <strong>estável</strong> (16.7.0). <a href=\"/docs/faq-versioning.html\">Assim como, todos o nossos lançamentos secundários</a>, não interrompe a compatibilidade com as versões anteriores.</p>\n<p>Se você está utilizando Hooks da versão alpha do React, observe que esta versão contêm algumas pequenas mudanças, que causa instabilidade ao Hooks. <strong>Nós não recomendamos a dependência da versão alpha em código de produção.</strong> Nós publicamos versões alpha para realizar mudanças com base na opinião da comunidade, antes da versão estável da API.</p>\n<p>Aqui estão todas as mudanças radicais do Hooks, quais foram feitas desde a primeira versão alpha:</p>\n<ul>\n<li>Remove <code class=\"gatsby-code-text\">useMutationEffect</code>. (<a href=\"https://github.com/sophiebits\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sophiebits</a> em <a href=\"https://github.com/facebook/react/pull/14336\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14336</a>)</li>\n<li>Renomeia <code class=\"gatsby-code-text\">useImperativeMethods</code> para <code class=\"gatsby-code-text\">useImperativeHandle</code>. (<a href=\"https://github.com/threepointone\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@threepointone</a> em <a href=\"https://github.com/facebook/react/pull/14565\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14565</a>)</li>\n<li>Evita renderização de valores idênticos nos Hooks <code class=\"gatsby-code-text\">useState</code> e <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14569\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14569</a>)</li>\n<li>Não compare o primeiro argumento passado aos Hooks <code class=\"gatsby-code-text\">useEffect</code>/<code class=\"gatsby-code-text\">useMemo</code>/<code class=\"gatsby-code-text\">useCallback</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14594\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14594</a>)</li>\n<li>Utilização do algortimo <code class=\"gatsby-code-text\">Object.is</code> para comparação dos valores de <code class=\"gatsby-code-text\">useState</code> e <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/Jessidhia\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Jessidhia</a> em <a href=\"https://github.com/facebook/react/pull/14752\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14752</a>)</li>\n<li>Renderiza os componentes com Hooks duas vezes no Modo Estrito (Strict Mode) - apenas DEV. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/14654\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14654</a>)</li>\n<li>Aperfeiçoamento da API de inicialização lenta (lazy initialization) do Hook <code class=\"gatsby-code-text\">useReducer</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/14723\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#14723</a>)</li>\n</ul>","excerpt":"Com o React 16.8, React Hooks tornam-se disponíveis em sua versão estável! O Que São Hooks?  Hooks lhe permite utilizar estado e outras funcionalidades do React sem a necessidade de escrever uma classe. Assim como, você também pode criar o seus próprios Hooks para compartilhar e reutilizar sua lógica com estado entre componentes. Se você nunca ouviu falar sobre Hooks antes, talvez você ache estes tópicos interessantes: Introduzindo Hooks explica porque nós estamos adicionando Hooks ao React…","frontmatter":{"title":"React v16.8: O React com Hooks","next":null,"prev":null,"author":[{"frontmatter":{"name":"Dan Abramov","url":"https://twitter.com/dan_abramov"}}]},"fields":{"date":"06 de fevereiro de 2019","path":"content/blog/2019-02-06-react-v16.8.0.md","slug":"/blog/2019/02/06/react-v16.8.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/2019/02/06/react-v16.8.0.html"}},"staticQueryHashes":[]}