"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Reaccionar procesamiento por lotes automático: cómo minimizar las repeticiones y aumentar el rendimiento

Reaccionar procesamiento por lotes automático: cómo minimizar las repeticiones y aumentar el rendimiento

Publicado el 2024-11-09
Navegar:691

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

En aplicaciones React grandes, los renderizados innecesarios pueden ser un problema importante, ya que ralentizan el rendimiento y hacen que su aplicación se sienta lenta. Con React 18, el procesamiento por lotes automático ayuda a optimizar el rendimiento al reducir las reproducciones innecesarias, lo que brinda a los desarrolladores una forma más eficiente de administrar las actualizaciones de estado. Esta guía lo guiará a través del concepto de procesamiento por lotes automático en React 18, por qué es importante para el rendimiento y cómo aprovecharlo al máximo en sus aplicaciones.

Introducción: el problema de los renderizados desperdiciados en grandes aplicaciones de React

Digamos que estás preparando la cena y en lugar de preparar todos los platos a la vez, sigues yendo y viniendo para preparar cada uno por separado; obviamente no es eficiente, ¿verdad? Lo mismo sucede en React cuando las actualizaciones de estado se manejan una por una, lo que provoca múltiples renderizaciones en lugar de solo una. Esto genera un desperdicio de procesamiento y un rendimiento más lento, especialmente en aplicaciones grandes.

Antes de React 18, las actualizaciones de estado que ocurrían muy juntas a menudo causaban múltiples renderizaciones. React 18 resuelve este problema con procesamiento por lotes automático, que agrupa múltiples actualizaciones en un único ciclo de renderizado, lo que resulta en menos renderizaciones innecesarias y un rendimiento mejorado.

¿Qué es el procesamiento por lotes automático en React 18?

Una mirada a la nueva característica

El procesamiento por lotes automático es una característica introducida en React 18 que permite a React manejar múltiples actualizaciones de estado dentro del mismo evento o efecto y luego activar solo una nueva renderización. Esto minimiza la cantidad de renderizados y mejora el rendimiento general de su aplicación.

Antes de React 18, el procesamiento por lotes solo se aplicaba dentro de los controladores de eventos. Sin embargo, React 18 extiende el procesamiento por lotes a todas las actualizaciones dentro de funciones asincrónicas como setTimeout, promesas y detectores de eventos, lo que lo hace más poderoso y completo.

Ejemplo de procesamiento por lotes automático

Aquí hay un ejemplo de cómo funciona el procesamiento por lotes automático en 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}

); }

En el código anterior, las actualizaciones de estado para el recuento y el texto se agrupan en lotes, lo que activa una única representación en lugar de dos. Esto es gracias al procesamiento por lotes automático de React 18.

Por qué es importante para el rendimiento

Cómo reduce las re-renderizaciones innecesarias

En React, cada vez que cambia el estado, se produce una nueva representación. Si tiene varias actualizaciones de estado que ocurren una tras otra, como en un controlador de eventos, React generalmente activará múltiples renderizaciones. Esto puede ralentizar tu aplicación, especialmente a medida que escala.

El procesamiento por lotes automático combina esas actualizaciones de estado en una sola pasada de renderizado. Imagínese si está completando un formulario con varios campos y cada cambio de entrada provoca que se vuelva a representar todo el formulario. Con el procesamiento por lotes automático, React procesa todos esos cambios de una sola vez, lo que hace que la interfaz de usuario se sienta más fluida y rápida.

Casos de uso comunes para el procesamiento por lotes automático

Ejemplos de actualizaciones de estado en efectos y controladores de eventos

El procesamiento por lotes automático funciona en muchas situaciones, entre ellas:

  1. Controladores de eventos: React ya ha agrupado actualizaciones en controladores de eventos, pero ahora es aún mejor para manejar múltiples actualizaciones sin renderizaciones innecesarias.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }
  1. Efectos y funciones asincrónicas: Con React 18, el procesamiento por lotes funciona perfectamente dentro de código asincrónico como setTimeout y promesas.
   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);

Esto significa que incluso en operaciones asíncronas, React puede agrupar varias actualizaciones, lo que aumenta el rendimiento y minimiza la cantidad de renderizaciones.

Procesamiento por lotes manual con flushSync: cuándo y por qué debería usarlo

¿Qué es FlushSync?

Puede haber casos en los que necesites controlar manualmente cuándo ocurren las actualizaciones de estado, particularmente cuando trabajas con animaciones o actualizaciones críticas de la interfaz de usuario. Aquí es donde entra en juego flushSync. Obliga a React a procesar la actualización inmediatamente en lugar de agruparla con otras actualizaciones.

Cuándo utilizar flushSync

Debes usar flushSync en escenarios en los que necesitas asegurarte de que el estado se actualice y se refleje en el DOM inmediatamente, en lugar de esperar a que React realice actualizaciones por lotes. Esto suele ser necesario en situaciones en las que el tiempo es crucial, como animaciones o comentarios visuales instantáneos.

Así es como funciona 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);
}

En este ejemplo, React procesa la actualización de setCount de inmediato, asegurando que el DOM refleje el cambio inmediatamente, lo cual es útil para acciones urgentes.

Conclusión: cómo el procesamiento por lotes ayuda a optimizar el rendimiento de React en aplicaciones modernas

El procesamiento por lotes automático de React 18 es una característica innovadora que optimiza el rendimiento al reducir las reproducciones innecesarias, lo que hace que sus aplicaciones se ejecuten más rápido y sin problemas. Al agrupar las actualizaciones de estado en una sola representación, React garantiza que la interfaz de usuario de su aplicación siga respondiendo y siendo eficiente, incluso a medida que escala.

Para la mayoría de los casos de uso, el procesamiento por lotes automático funciona perfectamente desde el primer momento, pero si alguna vez necesitas más control, puedes usar flushSync para manejar las actualizaciones en tiempo real.

Al aprovechar estas funciones, los desarrolladores ahora pueden minimizar los renderizados innecesarios y mejorar el rendimiento general de sus aplicaciones React, garantizando una mejor experiencia de usuario.


¿Listo para optimizar tu aplicación React con procesamiento por lotes automático? ¡Intenta implementar esta función en tu próximo proyecto y comprueba cuánto mejora el rendimiento de tu aplicación!


Si te ha gustado este artículo, considera apoyar mi trabajo:

  • Cómprame un café
  • Reserve una llamada para recibir tutoría o asesoramiento profesional
  • Sígueme en Twitter
  • Conéctate en LinkedIn
Declaración de liberación Este artículo se reproduce en: https://dev.to/paharihacker/react-18-automatic-batching-how-to-minimize-re-renders-and-boost-performance-15oc?1 Si hay alguna infracción, por favor contacto Study_golang@163 .comeliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3