{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2018/10/23/react-v-16-6.html","result":{"data":{"markdownRemark":{"html":"<p>Hoje estamos lançando o React 16.6 com alguns novos recursos convenientes. Uma forma de utilizar o PureComponent / shouldComponentUpdate para componentes de função, uma maneira de fazer a divisão de código usando Suspense e uma maneira mais fácil de consumir o Contexto de componentes de classe.</p>\n<p>Confira o <a href=\"#changelog\">changelog</a> completo abaixo.</p>\n<h2 id=\"reactmemo\"><a href=\"#reactmemo\" 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><a href=\"/docs/react-api.html#reactmemo\"><code class=\"gatsby-code-text\">React.memo</code></a> </h2>\n<p>Os componentes de classe podem não ser renderizados quando seus objetos de entrada são os mesmos usando <a href=\"/docs/react-api.html#reactpurecomponent\"><code class=\"gatsby-code-text\">PureComponent</code></a> ou <a href=\"/docs/react-component.html#shouldcomponentupdate\"><code class=\"gatsby-code-text\">shouldComponentUpdate</code></a>. Agora você pode fazer o mesmo com componentes de função envolvendo-os <a href=\"/docs/react-api.html#reactmemo\"><code class=\"gatsby-code-text\">React.memo</code></a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> MyComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">memo</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* só re-renderiza se as prop forem alteradas */</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"reactlazy-code-splitting-with-suspense\"><a href=\"#reactlazy-code-splitting-with-suspense\" 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><a href=\"/docs/code-splitting.html#reactlazy\"><code class=\"gatsby-code-text\">React.lazy</code></a>: Divisão de código com <code class=\"gatsby-code-text\">Suspense</code> </h2>\n<p>Você pode ter visto a <a href=\"/blog/2018/03/01/sneak-peek-beyond-react-16.html\">talk do Dan sobre React Suspense na JSConf Iceland</a>. Agora você pode usar o componente Suspense para fazer a <a href=\"/docs/code-splitting.html#reactlazy\">divisão de código</a> agrupando uma importação dinâmica em uma chamada <code class=\"gatsby-code-text\">React.lazy()</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">import</span> React<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>lazy<span class=\"token punctuation\">,</span> Suspense<span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> OtherComponent <span class=\"token operator\">=</span> <span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./OtherComponent'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Suspense</span></span> <span class=\"token attr-name\">fallback</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><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 plain-text\">Loading...</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><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">OtherComponent</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Suspense</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>O componente Suspense também permitirá que os autores da biblioteca iniciem a busca de dados com o suporte ao Suspense no futuro.</p>\n<blockquote>\n<p>Nota: Esse recurso ainda não está disponível para renderização no lado do servidor. O suporte para suspense será adicionado em uma versão posterior.</p>\n</blockquote>\n<h2 id=\"static-contexttype\"><a href=\"#static-contexttype\" 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><a href=\"/docs/context.html#classcontexttype\"><code class=\"gatsby-code-text\">static contextType</code></a> </h2>\n<p>No <a href=\"/blog/2018/03/29/react-v-16-3.html\">React 16.3</a> introduzimos a API de Contexto oficial como uma substituição à API de <a href=\"/docs/legacy-context.html\">Context Legado</a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> MyContext <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createContext</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Ouvimos comentários de que a adoção da nova API de suporte de renderização pode ser difícil em componentes de classe. Então, adicionamos uma conveniente API para <a href=\"/docs/context.html#classcontexttype\">consumir um valor de contexto de dentro de um componente de classe</a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">MyClass</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 keyword\">static</span> contextType <span class=\"token operator\">=</span> MyContext<span class=\"token punctuation\">;</span>\n  <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> value <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* realizar um efeito colateral na montagem do componente usando o valor do MyContext */</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">componentDidUpdate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> value <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* ... */</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">componentWillUnmount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> value <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* ... */</span>\n  <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\">let</span> value <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* renderizando algo baseado no valor de MyContext */</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"static-getderivedstatefromerror\"><a href=\"#static-getderivedstatefromerror\" 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><a href=\"/docs/react-component.html#static-getderivedstatefromerror\"><code class=\"gatsby-code-text\">static getDerivedStateFromError()</code></a> </h2>\n<p>O React 16 introduziu <a href=\"/blog/2017/07/26/error-handling-in-react-16.html\">Error Boundaries</a> para gerenciar os erros lançados nas renderizações do React. Já tivemos o <code class=\"gatsby-code-text\">componentDidCatch</code> um método de ciclo de vida que é acionado depois que um erro já aconteceu. É ótimo para registrar erros no servidor. Ele também permite mostrar uma interface do usuário diferente para o usuário, chamando <code class=\"gatsby-code-text\">setState</code>.</p>\n<p>Antes que seja disparado, processamos <code class=\"gatsby-code-text\">null</code> no lugar da árvore que gerou um erro. Isso às vezes interrompe os componentes pai que não esperam que seus representantes estejam vazios. Ele também não funciona para se recuperar de erros no servidor, pois os ciclo de vida <code class=\"gatsby-code-text\">Did</code> não são acionados durante a renderização no lado do servidor.</p>\n<p>Estamos adicionando outro método de erro que permite renderizar a interface do usuário de fallback antes que a renderização seja concluída. Veja os documentos para <a href=\"/docs/react-component.html#static-getderivedstatefromerror\"><code class=\"gatsby-code-text\">getDerivedStateFromError()</code></a>.</p>\n<blockquote>\n<p>Nota: <code class=\"gatsby-code-text\">getDerivedStateFromError()</code> ainda não está disponível para renderização no lado do servidor. Ele será projetado para funcionar com a renderização do lado do servidor em uma versão futura. Estamos liberando isso cedo para que você possa começar a se preparar para usá-lo.</p>\n</blockquote>\n<h2 id=\"deprecations-in-strictmode\"><a href=\"#deprecations-in-strictmode\" 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>Depreciações no StrictMode </h2>\n<p>Na versão <a href=\"/blog/2018/03/29/react-v-16-3.html#strictmode-component\">16.3</a> introduzmos o componente <a href=\"/docs/strict-mode.html\"><code class=\"gatsby-code-text\">StrictMode</code></a>. Ele permite que você aceite alertas antecipados quanto a padrões que possam causar problemas no futuro.</p>\n<p>Adicionamos mais duas API’s na lista de depreciados no <code class=\"gatsby-code-text\">StrictMode</code>. Se você não usa o <code class=\"gatsby-code-text\">StrictMode</code> não precisa se preocupar pois esses avisos não serão disparados por você.</p>\n<ul>\n<li><strong>ReactDOM.findDOMNode()</strong> - Esta API normalmente é mal compreendida e a maioria dos usos dela é desnecessária. Também pode ser surpreendentemente lento no React 16. <a href=\"/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage\">Veja a documentação</a> para possíveis atualizações.</li>\n<li><strong>Legacy Context</strong> usando contextTypes e getChildContext - Contexto legado torna o React um pouco mais lento e maior do que o necessário. É por isso que queremos incentivar a atualização para a <a href=\"/docs/context.html\">nova context API</a>. Espero que a adição da <a href=\"/docs/context.html#classcontexttype\"><code class=\"gatsby-code-text\">contextType</code></a> API torne isso um pouco mais fácil.</li>\n</ul>\n<p>Se você está com problemas para fazer upgrade, gostaríamos de receber seus comentários.</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>React v16.6.0 está disponível no npm.</p>\n<p>Para instalar o React 16 com 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.6.0 react-dom@^16.6.0</code></pre></div>\n<p>Para instalar o React 16 com 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.6.0 react-dom@^16.6.0</code></pre></div>\n<p>Nós também fornecemos compilações UMD de 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 detalhadas de instalação</a>.</p>\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=\"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>Adicione o <code class=\"gatsby-code-text\">React.memo()</code> como uma alternativa <code class=\"gatsby-code-text\">PureComponent</code> para funções. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/13748\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13748</a>)</li>\n<li>Adicione o <code class=\"gatsby-code-text\">React.lazy()</code> para componentes de divisão de código. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/13885\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13885</a>)</li>\n<li><code class=\"gatsby-code-text\">React.StrictMode</code> agora avisa sobre a API de contexto legado. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> em <a href=\"https://github.com/facebook/react/pull/13760\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13760</a>)</li>\n<li><code class=\"gatsby-code-text\">React.StrictMode</code> agora avisa sobre <code class=\"gatsby-code-text\">findDOMNode</code>. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> em <a href=\"https://github.com/facebook/react/pull/13841\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13841</a>)</li>\n<li>Renomeie <code class=\"gatsby-code-text\">unstable_AsyncMode</code> para <code class=\"gatsby-code-text\">unstable_ConcurrentMode</code>. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> em <a href=\"https://github.com/facebook/react/pull/13732\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13732</a>)</li>\n<li>Renomeie <code class=\"gatsby-code-text\">unstable_Placeholder</code> para <code class=\"gatsby-code-text\">Suspense</code>, e <code class=\"gatsby-code-text\">delayMs</code> para <code class=\"gatsby-code-text\">maxDuration</code>. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/13799\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13799</a> e <a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> em <a href=\"https://github.com/facebook/react/pull/13922\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13922</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>Adicionado <code class=\"gatsby-code-text\">contextType</code> como uma maneira mais ergonômica de se inscrever no contexto de uma classe. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> em <a href=\"https://github.com/facebook/react/pull/13728\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13728</a>)</li>\n<li>Adicionado <code class=\"gatsby-code-text\">getDerivedStateFromError</code> método de ciclo de vida para capturar erros futuros e assíncronos do lado do servidor. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> em <a href=\"https://github.com/facebook/react/pull/13746\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13746</a>)</li>\n<li>Avisa quando <code class=\"gatsby-code-text\">&lt;Context&gt;</code> é chamado ao invés de <code class=\"gatsby-code-text\">&lt;Context.Consumer&gt;</code>. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> em <a href=\"https://github.com/facebook/react/pull/13829\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13829</a>)</li>\n<li>Corrigido a sobreposição cinza no iOS Safari. (<a href=\"https://github.com/philipp-spiess\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@philipp-spiess</a> em <a href=\"https://github.com/facebook/react/pull/13778\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13778</a>)</li>\n<li>Corrigido um bug causado pela substituição <code class=\"gatsby-code-text\">window.event</code> no desenvolvimento. (<a href=\"https://github.com/sergei-startsev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sergei-startsev</a> em <a href=\"https://github.com/facebook/react/pull/13697\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13697</a>)</li>\n</ul>\n<h3 id=\"react-dom-server\"><a href=\"#react-dom-server\" 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 Server </h3>\n<ul>\n<li>Adicionado suporte para <code class=\"gatsby-code-text\">React.memo()</code>. (<a href=\"https://github.com/alexmckenley\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@alexmckenley</a> em <a href=\"https://github.com/facebook/react/pull/13855\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13855</a>)</li>\n<li>Adicionado suporte para <code class=\"gatsby-code-text\">contextType</code>. (<a href=\"https://github.com/alexmckenley\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@alexmckenley</a> em <a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> em <a href=\"https://github.com/facebook/react/pull/13889\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13889</a>)</li>\n</ul>\n<h3 id=\"scheduler-experimental\"><a href=\"#scheduler-experimental\" 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>Scheduler (Experimental) </h3>\n<ul>\n<li>Renomeado o pacote para <code class=\"gatsby-code-text\">scheduler</code>. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> em <a href=\"https://github.com/facebook/react/pull/13683\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13683</a>)</li>\n<li>Suportar níveis de prioridade, continuações e retornos de chamada agrupados. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/13720\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13720</a> e <a href=\"https://github.com/facebook/react/pull/13842\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13842</a>)</li>\n<li>Melhorado o mecanismo de fallback em ambientes non-DOM (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/13740\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13740</a>)</li>\n<li>Agendado <code class=\"gatsby-code-text\">requestAnimationFrame</code> antes. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> em <a href=\"https://github.com/facebook/react/pull/13785\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13785</a>)</li>\n<li>Corrigido a detecção do DOM para ser mais completa. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> em <a href=\"https://github.com/facebook/react/pull/13731\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13731</a>)</li>\n<li>Corrigir erros com o rastreamento de interação. Corrigir erros com o rastreamento de interação.(<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> em <a href=\"https://github.com/facebook/react/pull/13590\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13590</a>)</li>\n<li>Adicionado a transformação <code class=\"gatsby-code-text\">envify</code> ao pacote. (<a href=\"https://github.com/mridgway\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mridgway</a> em <a href=\"https://github.com/facebook/react/pull/13766\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13766</a>)</li>\n</ul>","excerpt":"Hoje estamos lançando o React 16.6 com alguns novos recursos convenientes. Uma forma de utilizar o PureComponent / shouldComponentUpdate para componentes de função, uma maneira de fazer a divisão de código usando Suspense e uma maneira mais fácil de consumir o Contexto de componentes de classe. Confira o changelog completo abaixo.   Os componentes de classe podem não ser renderizados quando seus objetos de entrada são os mesmos usando  ou . Agora você pode fazer o mesmo com componentes de função…","frontmatter":{"title":"React v16.6.0: lazy, memo e contextType","next":null,"prev":null,"author":[{"frontmatter":{"name":"Sebastian Markbåge","url":"https://twitter.com/sebmarkbage"}}]},"fields":{"date":"23 de outubro de 2018","path":"content/blog/2018-10-23-react-v-16-6.md","slug":"/blog/2018/10/23/react-v-16-6.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"React v17.0"},"fields":{"slug":"/blog/2020/10/20/react-v17.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Candidato à lançamento: Sem novas funcionalidades"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Construindo Ótimas Experiências de Usuário com Modo Concorrente e Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparando para o Futuro com as Prereleases React"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Apresentando o novo React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 e a atualização do Roadmap"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"O React já esta traduzido? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: O React com Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}}]}},"pageContext":{"slug":"/blog/2018/10/23/react-v-16-6.html"}},"staticQueryHashes":[]}