"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > React Automatic Batching: Como minimizar novas renderizações e aumentar o desempenho

React Automatic Batching: Como minimizar novas renderizações e aumentar o desempenho

Publicado em 2024-11-09
Navegar:599

React Automatic Batching: How to Minimize Re-Renders and Boost Performance

Em grandes aplicativos React, o desperdício de novas renderizações pode ser um problema significativo, diminuindo o desempenho e tornando seu aplicativo lento. Com o React 18, o lote automático ajuda a otimizar o desempenho, reduzindo novas renderizações desnecessárias, oferecendo aos desenvolvedores uma maneira mais eficiente de gerenciar atualizações de estado. Este guia orientará você no conceito de lote automático no React 18, por que ele é importante para o desempenho e como aproveitá-lo ao máximo em seus aplicativos.

Introdução: O problema do desperdício de renderizações em grandes aplicações React

Digamos que você esteja preparando o jantar e, em vez de preparar todos os pratos de uma vez, você fica indo e voltando para preparar cada um separadamente - obviamente não é eficiente, certo? A mesma coisa acontece no React quando as atualizações de estado são tratadas uma por uma, causando múltiplas renderizações em vez de apenas uma. Isso leva ao desperdício de processamento e ao desempenho mais lento, especialmente em aplicações grandes.

Antes do React 18, as atualizações de estado que aconteciam juntas geralmente causavam várias novas renderizações. O React 18 resolve esse problema com lote automático, que agrupa múltiplas atualizações em um único ciclo de renderização, resultando em menos re-renderizações desnecessárias e melhor desempenho.

O que é lote automático no React 18?

Uma olhada no novo recurso

Lote automático é um recurso introduzido no React 18 que permite ao React lidar com múltiplas atualizações de estado dentro do mesmo evento ou efeito e então acionar apenas uma nova renderização. Isso minimiza o número de renderizações e aumenta o desempenho geral do seu aplicativo.

Antes do React 18, o lote era aplicado apenas dentro de manipuladores de eventos. No entanto, o React 18 estende o lote para todas atualizações em funções assíncronas como setTimeout, promessas e ouvintes de eventos, tornando-o mais poderoso e abrangente.

Exemplo de lote automático

Aqui está um exemplo de como o lote automático funciona no React 18:

import { useState } from 'react';

function MyComponent() {
  const [count, setCount] = useState(0);
  const [text, setText] = useState('');

  function handleClick() {
    setCount(count   1);
    setText('Updated');
    // Both updates are batched, and only one re-render happens
  }

  return (
    

{count}

{text}

); }

No código acima, as atualizações de estado para contagem e texto são agrupadas em lote, acionando uma única nova renderização em vez de duas. Isso se deve ao lote automático do React 18.

Por que é importante para o desempenho

Como isso reduz re-renderizações desnecessárias

No React, toda vez que o estado muda, ocorre uma nova renderização. Se você tiver várias atualizações de estado que acontecem uma após a outra, como em um manipulador de eventos, o React geralmente acionará várias renderizações. Isso pode tornar seu aplicativo mais lento, especialmente à medida que ele é dimensionado.

O lote automático combina essas atualizações de estado em uma única passagem de renderização. Imagine se você estivesse preenchendo um formulário com vários campos e cada alteração de entrada fizesse com que todo o formulário fosse renderizado novamente. Com lote automático, o React processa todas essas alterações de uma só vez, tornando a IU mais suave e rápida.

Casos de uso comuns para lotes automáticos

Exemplos de atualizações de estado em manipuladores de eventos e efeitos

O lote automático funciona em muitas situações, incluindo:

  1. Event Handlers: Reaja com atualizações já em lote em manipuladores de eventos, mas agora é ainda melhor para lidar com múltiplas atualizações sem renderizações desnecessárias.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }
  1. Efeitos e funções assíncronas: Com o React 18, o lote funciona perfeitamente dentro de código assíncrono como setTimeout e promessas.
   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);

Isso significa que mesmo em operações assíncronas, o React pode agrupar várias atualizações, aumentando o desempenho e minimizando o número de novas renderizações.

Lotes manuais com flushSync: quando e por que você deve usá-lo

O que é flushSync?

Pode haver casos em que você precise controlar manualmente quando as atualizações de estado acontecem, principalmente ao trabalhar com animações ou atualizações críticas da interface do usuário. É aqui que entra o flushSync. Ele força o React a processar a atualização imediatamente, em vez de agrupá-la em lote com outras atualizações.

Quando usar flushSync

Você deve usar flushSync em cenários em que precisa garantir que o estado seja atualizado e refletido no DOM imediatamente, em vez de esperar que o React faça atualizações em lote. Isso geralmente é necessário em situações em que o tempo é crucial, como animações ou feedback visual instantâneo.

Veja como funciona o flushSync:

import { flushSync } from 'react-dom';

function handleClick() {
  flushSync(() => {
    setCount(count   1);
  });
  // The DOM is updated immediately after the state change
  console.log('Count updated:', count);
}

Neste exemplo, o React processa a atualização setCount imediatamente, garantindo que o DOM reflita a alteração imediatamente, o que é útil para ações urgentes.

Conclusão: como o lote ajuda a otimizar o desempenho do React em aplicativos modernos

O lote automático do React 18 é um recurso revolucionário que otimiza o desempenho, reduzindo novas renderizações desnecessárias, fazendo com que seus aplicativos sejam executados de maneira mais rápida e suave. Ao agrupar as atualizações de estado em uma única renderização, o React garante que a IU do seu aplicativo permaneça responsiva e eficiente, mesmo durante a escala.

Para a maioria dos casos de uso, o lote automático funciona perfeitamente imediatamente, mas se você precisar de mais controle, poderá usar flushSync para lidar com atualizações em tempo real.

Ao aproveitar esses recursos, os desenvolvedores agora podem minimizar o desperdício de renderizações e melhorar o desempenho geral de seus aplicativos React, garantindo uma melhor experiência do usuário.


Pronto para otimizar seu aplicativo React com lote automático? Tente implementar esse recurso em seu próximo projeto e veja o quanto ele melhora o desempenho do seu aplicativo!


Se você gostou deste artigo, considere apoiar meu trabalho:

  • Compre-me um café
  • Agende uma ligação para orientação ou aconselhamento profissional
  • Siga-me no Twitter
  • Conecte-se no LinkedIn
Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/paharihacker/react-18-automatic-batching-how-to-minimize-re-renders-and-boost-performance-15oc?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3