«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Старший уровень: обработка событий в React.

Старший уровень: обработка событий в React.

Опубликовано 31 июля 2024 г.
Просматривать:818

Senior level: Handling Events in React

Как старший разработчик, вы должны иметь глубокое понимание обработки событий в React. Это предполагает не только знание основ, но и освоение передовых методов создания эффективных, удобных в обслуживании и масштабируемых приложений. В этой статье рассматриваются тонкости обработки событий в React, включая добавление обработчиков событий, понимание синтетических событий, передачу аргументов обработчикам событий, создание пользовательских событий и использование делегирования событий.

Обработка событий

Добавление обработчиков событий в JSX

Добавить обработчики событий в JSX просто и похоже на обработку событий в обычном HTML, но с некоторыми ключевыми отличиями, связанными с уникальной архитектурой React.

Пример добавления обработчика событий:

import React from 'react';

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

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

В этом примере функция handleClick вызывается при каждом нажатии кнопки. Атрибут onClick в JSX используется для указания обработчика событий.

Синтетические события

React использует систему, называемую синтетическими событиями, для обработки событий. Синтетические события — это кроссбраузерная оболочка собственной системы событий браузера. Это гарантирует, что события ведут себя одинаково в разных браузерах, обеспечивая единый API.

Пример синтетического события:

import React from 'react';

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

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

В этом примере функция handleInputChange регистрирует значение поля ввода при каждом его изменении. Параметр события — это синтетическое событие, которое обеспечивает согласованные свойства события во всех браузерах.

Передача аргументов обработчикам событий

Передача аргументов обработчикам событий может осуществляться с помощью функции стрелки или метода привязки, что имеет решающее значение для более гибкой обработки событий.

Пример использования функции стрелки:

import React from 'react';

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

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

Пример использования метода привязки:

import React from 'react';

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

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

Оба метода позволяют передавать дополнительные аргументы функции handleClick, обеспечивая гибкость в обработке событий.

Пользовательская обработка событий

Создание пользовательских событий

Создание пользовательских событий в React необходимо для более сложных взаимодействий, которые не охватываются стандартными событиями. Пользовательские события можно создавать и отправлять с помощью конструктора CustomEvent и метода диспетчеризации.

Пример создания и отправки специального события:

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;

В этом примере создается и отправляется пользовательское событие с именем customEvent при нажатии кнопки. Обработчик событий прослушивает пользовательское событие и записывает подробное сообщение о событии.

Делегирование событий в React

Делегирование событий — это метод, при котором один прослушиватель событий используется для управления событиями для нескольких элементов. Это особенно полезно для эффективного управления событиями в списках или таблицах.

Пример делегирования события:

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;

В этом примере один обработчик событий в элементе div управляет событиями нажатия для всех кнопок. Обработчик событий проверяет event.target, чтобы определить, какая кнопка была нажата, и соответствующим образом регистрирует сообщение.

Лучшие практики обработки событий в React

  1. Избегайте создания встроенных функций в JSX: Создание новых функций внутри метода рендеринга может привести к ненужным повторным рендерингам и проблемам с производительностью. Вместо этого определите обработчики событий как методы класса или используйте перехватчики.
   const App = () => {
     const handleClick = () => {
       console.log('Button clicked!');
     };

     return (
       
); };
  1. Предотвратить поведение по умолчанию и остановить распространение: Используйте event.preventDefault(), чтобы предотвратить поведение по умолчанию, и event.stopPropagation(), чтобы остановить распространение событий, когда это необходимо.
   const handleSubmit = (event) => {
     event.preventDefault();
     // Handle form submission
   };

   return 
...
;
  1. Очистка прослушивателей событий: При добавлении прослушивателей событий непосредственно в элементы DOM обязательно очистите их, чтобы избежать утечек памяти.
   useEffect(() => {
     const handleResize = () => {
       console.log('Window resized');
     };

     window.addEventListener('resize', handleResize);

     return () => {
       window.removeEventListener('resize', handleResize);
     };
   }, []);
  1. Устранение дребезга или регулирование высокочастотных событий: Используйте методы устранения дребезга или регулирования для высокочастотных событий, таких как прокрутка или изменение размера, для повышения производительности.
   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. Используйте делегирование событий с умом: Используйте делегирование событий для элементов, которые динамически добавляются или удаляются в DOM, например списков элементов.
   const List = () => {
     const handleClick = (event) => {
       if (event.target.tagName === 'LI') {
         console.log(`Item ${event.target.textContent} clicked!`);
       }
     };

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

Заключение

Эффективная обработка событий в React имеет решающее значение для создания интерактивных и высокопроизводительных приложений. Освоив методы добавления обработчиков событий, использования синтетических событий, передачи аргументов обработчикам событий, создания пользовательских событий и использования делегирования событий, вы сможете создавать надежные и масштабируемые приложения. Внедрение лучших практик гарантирует, что ваш код останется поддерживаемым и производительным по мере его усложнения. Как старший разработчик, ваша способность использовать эти передовые методы будет в значительной степени способствовать успеху ваших проектов и эффективности вашей команды.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/david_zamoraballesteros_/senior-level-handling-events-in-react-9h8?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3