البرمجة

Prevent Event Bubbling in React

لمنع تداول الحدث (event bubbling) في المكونات المتداخلة في React عند النقر (click)، يمكنك استخدام e.stopPropagation() في مكان الحدث onClick للعنصر الفرعي

  • . هذا سيمنع تداول الحدث إلى العنصر الأعلى
      .

      في مثالك، يمكنك تحديث الكود ليبدو كما يلي:

      jsx
      class List extends React.Component { constructor(props) { super(props); } handleClick() { // do something } render() { return ( <ul onClick={(e) => { console.log('parent'); this.handleClick(); }} > <li onClick={(e) => { e.stopPropagation(); // منع تداول الحدث console.log('child'); this.handleClick(); }} > li> ul> ) } }

      بهذا التحديث، عند النقر على العنصر الفرعي

    • ، سترى “child” فقط في الكونسول ولن ترى “parent”، مما يعني أن الحدث لم يتداول إلى العنصر الأعلى
        .

        أتمنى أن تكون هذه المعلومات مفيدة لك!

  • المزيد من المعلومات

    في React، عندما تنشئ مكونًا يحتوي على عناصر متداخلة وتضيف معالجات الحدث onClick لهذه العناصر، يمكن للحدث أن يتداول (ينتشر) من العنصر الفرعي إلى العنصر الأعلى. هذا يعني أن النقر على العنصر الفرعي سيؤدي إلى تنفيذ معالج الحدث للعنصر الفرعي ومن ثم معالج الحدث للعنصر الأعلى.

    لمنع تداول الحدث، يمكنك استخدام e.stopPropagation() في معالج الحدث الخاص بالعنصر الفرعي. هذا يمنع الحدث من الوصول إلى العناصر الأعلى في شجرة العناصر.

    بالنسبة للفرق بين e.preventDefault() و e.stopPropagation():

    إذا كنت تريد المزيد من المعلومات أو تحتاج إلى شرح إضافي، فلا تتردد في طرح أسئلتك!

    مقالات ذات صلة

    زر الذهاب إلى الأعلى
    إغلاق

    أنت تستخدم إضافة Adblock

    يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر