"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 > Nivel superior: Manejo de eventos en React

Nivel superior: Manejo de eventos en React

Publicado el 2024-07-31
Navegar:217

Senior level: Handling Events in React

Como desarrollador senior, se espera que tengas un conocimiento profundo del manejo de eventos en React. Esto implica no sólo conocer los conceptos básicos sino también dominar técnicas avanzadas para crear aplicaciones eficientes, mantenibles y escalables. Este artículo cubre las complejidades del manejo de eventos en React, incluida la adición de controladores de eventos, la comprensión de eventos sintéticos, la transferencia de argumentos a los controladores de eventos, la creación de eventos personalizados y el aprovechamiento de la delegación de eventos.

Manejo de eventos

Agregar controladores de eventos en JSX

Agregar controladores de eventos en JSX es sencillo y similar a manejar eventos en HTML normal, pero con algunas diferencias clave debido a la arquitectura única de React.

Ejemplo de cómo agregar un controlador de eventos:

import React from 'react';

const handleClick = () => {
  console.log('Button clicked!');
};

const App = () => {
  return (
    
); }; export default App;

En este ejemplo, la función handleClick se llama cada vez que se hace clic en el botón. El atributo onClick en JSX se utiliza para especificar el controlador de eventos.

Eventos sintéticos

React utiliza un sistema llamado eventos sintéticos para manejar eventos. Los eventos sintéticos son un contenedor entre navegadores alrededor del sistema de eventos nativo del navegador. Esto garantiza que los eventos se comporten de manera consistente en diferentes navegadores, proporcionando una API unificada.

Ejemplo de un evento sintético:

import React from 'react';

const handleInputChange = (event) => {
  console.log('Input value:', event.target.value);
};

const App = () => {
  return (
    
); }; export default App;

En este ejemplo, la función handleInputChange registra el valor del campo de entrada cada vez que cambia. El parámetro de evento es un evento sintético que proporciona propiedades de evento consistentes en todos los navegadores.

Pasar argumentos a controladores de eventos

Se pueden pasar argumentos a los controladores de eventos usando una función de flecha o el método de vinculación, lo cual es crucial para manejar eventos de una manera más flexible.

Ejemplo usando una función de flecha:

import React from 'react';

const handleClick = (message) => {
  console.log(message);
};

const App = () => {
  return (
    
); }; export default App;

Ejemplo usando el método de vinculación:

import React from 'react';

const handleClick = (message) => {
  console.log(message);
};

const App = () => {
  return (
    
); }; export default App;

Ambos métodos le permiten pasar argumentos adicionales a la función handleClick, lo que brinda flexibilidad en el manejo de eventos.

Manejo de eventos personalizados

Crear eventos personalizados

La creación de eventos personalizados en React es necesaria para interacciones más complejas que no están cubiertas por eventos estándar. Los eventos personalizados se pueden crear y distribuir utilizando el constructor CustomEvent y el método despachoEvent.

Ejemplo de creación y envío de un evento personalizado:

import React, { useEffect, useRef } from 'react';

const CustomEventComponent = () => {
  const buttonRef = useRef(null);

  useEffect(() => {
    const handleCustomEvent = (event) => {
      console.log(event.detail.message);
    };

    const button = buttonRef.current;
    button.addEventListener('customEvent', handleCustomEvent);

    return () => {
      button.removeEventListener('customEvent', handleCustomEvent);
    };
  }, []);

  const handleClick = () => {
    const customEvent = new CustomEvent('customEvent', {
      detail: { message: 'Custom event triggered!' },
    });
    buttonRef.current.dispatchEvent(customEvent);
  };

  return (
    
  );
};

export default CustomEventComponent;

En este ejemplo, se crea y distribuye un evento personalizado llamado customEvent cuando se hace clic en el botón. El controlador de eventos escucha el evento personalizado y registra el mensaje detallado del evento.

Delegación de eventos en React

La delegación de eventos es una técnica en la que se utiliza un único detector de eventos para gestionar eventos para múltiples elementos. Esto es especialmente útil para gestionar eventos de manera eficiente en listas o tablas.

Ejemplo de delegación de eventos:

import React from 'react';

const handleClick = (event) => {
  if (event.target.tagName === 'BUTTON') {
    console.log(`Button ${event.target.textContent} clicked!`);
  }
};

const App = () => {
  return (
    
); }; export default App;

En este ejemplo, un único controlador de eventos en el elemento div administra los eventos de clic para todos los botones. El controlador de eventos verifica event.target para determinar en qué botón se hizo clic y registra un mensaje en consecuencia.

Mejores prácticas para el manejo de eventos en React

  1. Evite la creación de funciones en línea en JSX: La creación de nuevas funciones dentro del método de renderizado puede generar renderizados innecesarios y problemas de rendimiento. En su lugar, defina los controladores de eventos como métodos de clase o utilice ganchos.
   const App = () => {
     const handleClick = () => {
       console.log('Button clicked!');
     };

     return (
       
); };
  1. Prevenir el comportamiento predeterminado y detener la propagación: Utilice event.preventDefault() para evitar el comportamiento predeterminado y event.stopPropagation() para detener la propagación de eventos cuando sea necesario.
   const handleSubmit = (event) => {
     event.preventDefault();
     // Handle form submission
   };

   return 
...
;
  1. Limpiar detectores de eventos: Al agregar detectores de eventos directamente a elementos DOM, asegúrese de limpiarlos para evitar pérdidas de memoria.
   useEffect(() => {
     const handleResize = () => {
       console.log('Window resized');
     };

     window.addEventListener('resize', handleResize);

     return () => {
       window.removeEventListener('resize', handleResize);
     };
   }, []);
  1. Antirrebote o aceleración de eventos de alta frecuencia: Utilice técnicas de antirrebote o aceleración para eventos de alta frecuencia, como desplazamiento o cambio de tamaño, para mejorar el rendimiento.
   const debounce = (func, delay) => {
     let timeoutId;
     return (...args) => {
       clearTimeout(timeoutId);
       timeoutId = setTimeout(() => {
         func.apply(null, args);
       }, delay);
     };
   };

   useEffect(() => {
     const handleScroll = debounce(() => {
       console.log('Scroll event');
     }, 300);

     window.addEventListener('scroll', handleScroll);

     return () => {
       window.removeEventListener('scroll', handleScroll);
     };
   }, []);
  1. Utilice la delegación de eventos con prudencia: Aproveche la delegación de eventos para elementos que se agregan o eliminan dinámicamente al DOM, como listas de elementos.
   const List = () => {
     const handleClick = (event) => {
       if (event.target.tagName === 'LI') {
         console.log(`Item ${event.target.textContent} clicked!`);
       }
     };

     return (
       
  • Item 1
  • Item 2
  • Item 3
); };

Conclusión

Manejar eventos en React de manera eficiente es crucial para crear aplicaciones interactivas y de alto rendimiento. Al dominar las técnicas de agregar controladores de eventos, utilizar eventos sintéticos, pasar argumentos a controladores de eventos, crear eventos personalizados y aprovechar la delegación de eventos, podrá crear aplicaciones sólidas y escalables. La implementación de mejores prácticas garantiza que su código siga siendo mantenible y funcional a medida que crece en complejidad. Como desarrollador senior, su capacidad para utilizar estas técnicas avanzadas contribuirá significativamente al éxito de sus proyectos y a la eficacia de su equipo.

Declaración de liberación Este artículo se reproduce en: https://dev.to/david_zamoraballesteros_/senior-level-handling-events-in-react-9h8?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Ú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