"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > المستوى الأول: التعامل مع الأحداث في React

المستوى الأول: التعامل مع الأحداث في React

تم النشر بتاريخ 2024-07-31
تصفح:174

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 نظامًا يسمى الأحداث الاصطناعية للتعامل مع الأحداث. الأحداث الاصطناعية عبارة عن غلاف عبر المتصفحات حول نظام الأحداث الأصلي للمتصفح. وهذا يضمن أن الأحداث تتصرف بشكل متسق عبر المتصفحات المختلفة، مما يوفر واجهة برمجة تطبيقات موحدة.

مثال على حدث اصطناعي:

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 وطريقة SubmitEvent.

مثال لإنشاء وإرسال حدث مخصص:

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 وإرساله عند النقر فوق الزر. يستمع معالج الحدث إلى الحدث المخصص ويسجل رسالة تفاصيل الحدث.

تفويض الحدث في رد الفعل

تفويض الحدث هو أسلوب يتم فيه استخدام مستمع حدث واحد لإدارة الأحداث لعناصر متعددة. وهذا مفيد بشكل خاص لإدارة الأحداث بكفاءة في القوائم أو الجداول.

مثال لتفويض الحدث:

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. منع السلوك الافتراضي وإيقاف النشر: استخدم events.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