Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() مفاتيح React، نعم! أنت بحاجة إليها، ولكن لماذا بالضبط؟ - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2021-10-12
تطوير البرمجيات

مفاتيح React، نعم! أنت بحاجة إليها، ولكن لماذا بالضبط؟

برزيميسلاف أدامتشيك

تحويل مصفوفة إلى قائمة من العناصر باستخدام React بسيط جدًا، كل ما عليك فعله هو تعيين تلك المصفوفة وإرجاع العنصر المناسب لكل عنصر مصفوفة.

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

لماذا نحتاج إلى هذه السمة الرئيسية؟

قد تكون أبسط إجابة هنا هي "لتحسين عمليات إعادة الإرجاع"، ولكن الإجابة الأكثر اكتمالاً يجب أن تذكر على الأقل مفهوم React تسوية React. هذه هي عملية معرفة كيفية تحديث واجهة المستخدم بأكثر الطرق فعالية. للقيام بذلك بسرعة React أن يقرّر أي أجزاء من شجرة العناصر يجب تحديثها وأيها لا يجب تحديثها. المشكلة هي أنه قد يكون هناك الكثير من العناصر في DOM ومقارنة كل عنصر منها في تحديد أي منها يجب تحديثه مكلف جدًا. لتحسين ذلك, React تطبق خوارزمية الفرق التي تعتمد على افتراضين:

  1. نوعان مختلفان من العناصر لن يكونا متشابهين أبدًا - لذا أعد عرضهما.
  2. يمكن للمطورين المساعدة في تحسين هذه العملية يدويًا من خلال السمات الرئيسية، بحيث يمكن توطين العناصر ومقارنتها بشكل أسرع، حتى لو تغير ترتيبها.

وبناءً على ذلك، يمكننا استنتاج أن كلًّا من مفتاح React يجب أيضًا أن تكون فريدة (ضمن قائمة العناصر، وليس على مستوى العالم)، ومستقرة (يجب ألا تتغير). لكن ما الذي يمكن أن يحدث عندما لا تكون كذلك؟

التفرد والثبات ومؤشر الصفيف

كما ذكرنا من قبل, مفاتيح React يجب أن يكون ثابتًا وفريدًا. أسهل طريقة لتحقيق ذلك هو استخدام مُعرِّف فريد (من قاعدة بيانات على سبيل المثال) وتمريره إلى كل عنصر عند تعيين مصفوفة، أمر سهل. ولكن ماذا عن الحالات التي لا نملك فيها معرّفًا أو اسمًا أو معرّفات فريدة أخرى لتمريرها إلى كل عنصر؟ حسنًا، إن لم نمرر أي شيء كمفتاح React سيأخذ فهرس المصفوفة الحالي افتراضيًا (بما أنه فريد داخل تلك القائمة) للتعامل معه نيابةً عنا، ولكنه سيعطينا أيضًا رسالة خطأ لطيفة في وحدة التحكم:

لماذا هذا هو الحال؟ الجواب هو أن فهرس المصفوفة غير مستقر. إذا تغيّر ترتيب العناصر، سيتغيّر كل مفتاح من المفاتيح وسيكون لدينا مشكلة. إذا كان React يصادف حالة تم فيها تغيير الترتيب في قائمة العناصر، سيستمر في محاولة مقارنتها حسب المفاتيح، وهذا يعني أن كل مقارنة ستنتهي بإعادة بناء مكون، ونتيجةً لذلك ستتم إعادة بناء القائمة بأكملها من الصفر. بالإضافة إلى ذلك، قد نواجه بعض المشاكل غير المتوقّعة، مثل تحديثات حالة المكوّن لعناصر مثل المدخلات غير المنضبطة وغيرها من المشاكل السحرية التي يصعب تصحيحها.

الاستثناءات

لنعد إلى فهرس المصفوفة. إذا كان استخدامه كـ مفتاح React يمكن أن تكون إشكالية للغاية، لماذا React سيستخدمها افتراضيًا؟ هل هناك أي حالة استخدام حيث لا بأس من القيام بذلك؟ الإجابة نعم، حالة الاستخدام هي القوائم الثابتة. إن كنت متأكدًا من أن القائمة التي تصيِّرها لن يتغير ترتيبها أبدًا، فمن الآمن استخدام فهرس الصفيف، ولكن تذكّر إن كان لديك أي معرّفات فريدة فمن الأفضل استخدامها بدلًا من ذلك. يمكنك أيضًا أن تلاحظ أن تمرير الفهارس كمفاتيح سيجعل React تختفي رسالة الخطأ، بينما تؤدي في الوقت نفسه إلى قيام بعض المُصنفات الخارجية بعرض خطأ أو تحذير. ويرجع ذلك إلى حقيقة أن الاستخدام الصريح للفهارس كمفاتيح يعتبر ممارسة سيئة وقد تتعامل بعض المُعالجات الخارجية مع ذلك على أنه خطأ، بينما React نفسها تعتبرها حالة "المطورين الذين يعرفون ما يفعلونه" - لذا لا تفعل ذلك إلا إذا كنت تعرف حقًا ما تفعله. بعض الأمثلة على الحالات التي يمكن أن يكون فيها استخدام هذا الاستثناء مقبولًا هي القائمة المنسدلة بقائمة ثابتة من الأزرار أو عرض قائمة من العناصر مع معلومات عنوان شركتك.

بديل للمفتاح القائم على مجموعة البيانات

لنفترض أن أياً مما سبق ليس خياراً متاحاً لنا. على سبيل المثال، علينا أن نعرض قائمة من العناصر بناءً على مصفوفة من السلاسل التي يمكن أن تكون مكررة ولكن يمكن أيضًا إعادة ترتيبها. في هذه الحالة، لا يمكننا استخدام أي من السلاسل لأنها ليست فريدة (يمكن أن يسبب هذا بعض الأخطاء السحرية أيضًا)، وفهرس المصفوفة ليس جيدًا بما فيه الكفاية لأننا سنغير ترتيب العناصر. آخر شيء يمكننا الاعتماد عليه في مثل هذه الحالات هو استخدام بعض المعرّفات الخارجية. تذكر، يجب أن تكون مستقرة لذا لا يمكننا استخدام Math.random(). هناك بعض حزم NPM التي يمكننا استخدامها في مثل هذه الحالات، على سبيل المثال "uuid" الحزمة. يمكن لأدوات كهذه أن تساعدنا في الحفاظ على مفاتيح قائمتنا مستقرة وفريدة، حتى عندما لا يمكننا العثور على معرّفات مناسبة ضمن مجموعة بياناتنا. يجب أن نأخذ بعين الاعتبار استخدام معرّف قاعدة البيانات وفهرس الصفيف (إن أمكن) أولًا، لتقليل عدد الحزم المستخدمة من قبل المشروع.

لتختتم

  • كل عنصر في قائمة React أن يكون للعناصر سمة مفتاح فريدة وثابتة,
  • مفاتيح React تُستخدم لتسريع عملية المصالحة وتجنب إعادة بناء العناصر غير الضرورية في القوائم,
  • أفضل مصدر للمفاتيح هو المعرف الفريد لإدخال البيانات (على سبيل المثال، من قاعدة البيانات),
  • يمكنك استخدام فهرس الصفيف كمفتاح ولكن فقط لقائمة ثابتة لن يتغير ترتيبها,
  • إذا لم تكن هناك طريقة أخرى للحصول على مفاتيح ثابتة وفريدة من نوعها، ففكر في استخدام بعض مزودي المعرفات الخارجيين، على سبيل المثال، حزمة "uuid".

اقرأ المزيد:

لماذا يجب عليك (على الأرجح) استخدام Typescript

كيف لا تقتل مشروعاً بممارسات الترميز السيئة؟

استراتيجيات جلب البيانات في NextJS

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

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

اكتشف كيف تتفوق شركة The Codest في إنشاء تطبيقات ويب تفاعلية قابلة للتطوير باستخدام أحدث التقنيات، وتقديم تجارب مستخدم سلسة عبر جميع المنصات. اكتشف كيف تقود خبرتنا التحول الرقمي والأعمال التجارية...

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

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

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

استكشف هذا الدليل الأساسي حول تطوير برمجيات جافا outsourcing بنجاح لتعزيز الكفاءة والوصول إلى الخبرة وتحقيق نجاح المشروع باستخدام The Codest.

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic