عناصر DOM

من موسوعة حسوب

تعتمد React نظام DOM معتمد على المتصفّح من أجل الأداء والتوافقية بين المتصفحات. أخذنا عند بناء React الفرصة لتجاوز بعض الصعوبات في طريقة اعتماد DOM في المتصفّح.

يجب في React كتابة جميع خاصيّات HTML وخاصيّات الكائنات في DOM (بما في ذلك معالجات الأحداث) بطريقة camelCase. على سبيل المثال تتوافق خاصيّة HTML التي تُدعى tabindex مع الخاصيّة tabIndex في React. الاستثناء الوحيد هو خاصيّات aria-*‎ و data-*‎، والتي يجب كتابتها بأحرف صغيرة. على سبيل المثال بإمكانك الاحتفاظ بالخاصيّة aria-label باسمها aria-label.

الفوارق بين خاصيّات HTML

هنالك عدد من خاصيّات HTML التي تعمل بشكل مختلف بين React و HTML:

checked

الخاصيّة checked مدعومة من قبل مكوّنات ‎<input>‎ من النوع checkbox أو radio. بإمكانك استخدامها لتحديد ما إذا كان المكوّن مُختارًا أم لا. يُفيد ذلك لبناء مكوّنات مضبوطة. إنّ الخاصيّة defaultChecked هي المكافئة في المكوّنات غير المضبوطة والتي تُحدّد ما إذا كان المكوّن مختارًا عند وصله.

className

استخدم الخاصيّة className لتحديد صنف CSS. ينطبق ذلك على جميع عناصر DOM و SVG الاعتيادية مثل ‎<div>‎ و ‎<a>‎، وغيرها.

إن كنت تستخدم React مع مكوّنات الويب (وهو أمرٌ غير شائع) فاستخدم الخاصيّة class بدلًا من ذلك.

dangerouslySetInnerHTML

الخاصيّة dangerouslySetInnerHTML هي بديل React لاستخدام innerHTML في DOM المتصفح. يكون تعيين HTML من الشيفرة أمرًا خطيرًا بشكلٍ عام لأنّه من السهل تعريق مستخدميك إلى هجمات XSS (اختصارًا للعبارة cross-site scripting). لذا يمكنك تعيين HTML بشكل مباشر من React، ولكن يجب عليك كتابة الخاصيّة dangerouslySetInnerHTML وتمرير كائن مع المفتاح ‎__html لتذكير نفسك بخطر فعل ذلك. على سبيل المثال:

function createMarkup() {
  return {__html: 'First &middot; Second'};
}

function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}

htmlFor

لمّا كانت for كلمة محجوزة في JavaScript، فتستخدم عناصر React الخاصيّة htmlFor بدلًا من ذلك.

onChange

يسلك الحدث onChange السلوك الذي تتوقعه منه، فعند تغيّر حقل إدخال يُطلَق هذا الحدث. لا نستخدم عن قصد السلوك الحالي للمتصفح لأنّ الحدث onChange هو تسمية خاطئة لسلوكه وتعتمد React على هذا الحدث للتعامل مع مدخلات المستخدم في الزمن الحقيقي.

selected

الخاصيّة selected مدعومة من قبل المكوّن ‎<option>‎. تستطيع استخدامها لتحديد ما إذا كان المكوّن مُحدَّدًا. يُفيد هذا لبناء مكوّنات مضبوطة.

style

ملاحظة: تستخدم بعض الأمثلة في التوثيق الخاصيّة style للسهولة، ولكنّ استخدام الخاصيّة ‎<option>‎ كوسيلة أساسية لتنسيق العناصر هو أمر غير مفضّل بشكلٍ عام. يجب في معظم الحالات استخدام الخاصيّة className للإشارة إلى الأصناف المعرّفة في ملف تنسيق CSS خارجي. تُستخدَم الخاصيّة style غالبًا في تطبيقات React لإضافة تنسيقات محسوبة بشكل ديناميكي في الزمن الحقيقي. انظر أيضًا: الأسئلة الأكثر شيوعًا: التنسيق و CSS.

تقبل الخاصيّة style كائن JavaScript مع خاصيّات مكتوبة بشكل camelCase بدلًا من سلاسل نصيّة في CSS. يتوافق ذلك مع خاصيّة style في JavaScript، وهو أكثر كفاءة، ويمنع هجمات XSS. على سبيل المثال: