"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يجب عليك تجنب وظائف السهم أو الربط في دعائم JSX؟

لماذا يجب عليك تجنب وظائف السهم أو الربط في دعائم JSX؟

تم النشر بتاريخ 2024-11-08
تصفح:343

Why Should You Avoid Arrow Functions or Binding in JSX Props?

لماذا يعد استخدام وظائف السهم أو الربط في دعائم JSX أمرًا محظورًا

عند استخدام React، من المهم تجنب استخدام وظائف الأسهم أو ملزمة في الدعائم JSX. يمكن أن تؤدي هذه الممارسة إلى مشاكل في الأداء وسلوك غير صحيح.

مشاكل الأداء

استخدام وظائف الأسهم أو الربط ضمن دعائم JSX يفرض إعادة إنشاء هذه الوظائف في كل تصيير. هذا يعني أنه:

  • تم تجاهل الوظيفة القديمة، مما يؤدي إلى جمع البيانات المهملة.
  • قد يؤدي العرض المستمر للعديد من العناصر إلى اهتزاز الأداء.
  • المكونات التي تعتمد على PureComponents أو يجب أن يستمر ComponentUpdate في تشغيل عمليات إعادة العرض بسبب تغيير وظيفة وظيفة السهم.
سلوك غير صحيح

خذ بعين الاعتبار المثال التالي:

onClick={ () => this.handleDelete(tile)}

onClick={() => this.handleDelete(tile)}

أفضل الممارسات

لتجنب هذه المخاطر، استخدم أفضل الممارسات التالية:

    ربط معالج الحدث في المنشئ:
  • constructor(props) { سوبر(الدعائم); this.handleDelete = this.handleDelete.bind(this);
constructor(props) {
  super(props);
  this.handleDelete = this.handleDelete.bind(this);
}
    قم بإنشاء وظيفة سهم خارج طريقة العرض:
  • const HandleDelete = Tile => { // التعامل مع منطق الحذف };
const handleDelete = tile => {
  // Handle delete logic
};
ملاحظة إضافية:

من المهم ملاحظة أن وظائف السهم جيدة تمامًا عند استخدامها في أجزاء أخرى من المكون، مثل طريقة العرض. ومع ذلك، يجب تجنبها عند تعيين معالجات الأحداث لخاصيات JSX.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3