محتويات الدورة

React / المكونات والحالة / الدرس 2

JSX والتعبيرات ومدخلات المكونات

حول بنية الواجهة إلى JSX وحدد props توضح سلوك المكون.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • JSX صياغة مصدر لا نص HTML
  • عرض النصوص بأمان
  • فحص الواجهات عند الحدود

JSX صياغة مصدر لا نص HTML

تدمج JSX أوصاف العناصر في مصدر JavaScript وتحولها أداة البناء، وليست نص HTML عاديا يحلل وقت التشغيل. أغلق الوسوم وأعد تعبيرا محيطا أو Fragment واستخدم className وhtmlFor. تضيف الأقواس تعبيرا لا كتلة تعليمات عشوائية. سم الحسابات الوسيطة بدلا من شروط متداخلة كثيرة. ويبقى وجوب صحة علاقات HTML؛ فلا تثبت الترجمة صلاحية كل تداخل.

props مدخلات للقراءة

يمرر الأب props ويقرأها المكون لذلك العرض. يوضح التفكيك العقد وتغطي القيمة الافتراضية الغياب أو undefined لا null المقصودة. لا تعدل كائن المدخل لتصحيحه في الابن؛ تحقق أو وحد عند الحد المناسب وأبلغ التغيير برد نداء للأب. صف المعنى والوحدة؛ فعدد المقاعد والسنتات أعداد لكنهما عقدان مختلفان.

عرض النصوص بأمان

يضع المثال الاسم في تعبير عنوان فتعامل React DOM السلسلة نصا لا HTML. يفيد ذلك ولا يضمن أمان التطبيق كله؛ تحتاج العناوين وHTML الخام والتفويض تحققا. لا تستخدم HTML خاما لمجرد وجود أقواس زاوية، بل مكونات للتنسيق المدعوم. الناتج نص عادي ولا يحتاج المكون معرفة مصدر الاسم المصطنع.

jsx وحدة مكون — تتطلب مضيف React الموضح بالمقرر
function Greeting({ name = "Guest" }) { return <h1>Hello, {name}</h1>; }
export default function App() { return <main><Greeting name="Mira" /></main>; }
الناتج المتوقع
Hello, Mira

تصبح الخاصية ابنا نصيا ولا تستخدم القيمة الافتراضية هنا.

children لمواضع التركيب

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

jsx وحدة مكون — تتطلب مضيف React الموضح بالمقرر
function Panel({ title, children }) { return <section><h2>{title}</h2>{children}</section>; }
export default function App() { return <main><h1>Workshop</h1><Panel title="Materials"><p>Bring local notes.</p></Panel></main>; }
الناتج المتوقع
Workshop
Materials
Bring local notes.

يملك الأب المحتوى ويملك الغلاف بنية قسم بسيطة.

فحص الواجهات عند الحدود

وضح المطلوب والافتراضي والأبناء وردود النداء. تساعد الأنواع والفحوص ولا تتحقق وحدها من بيانات خارجية. اختبر النص الفارغ والغياب وnull المسموحة والترجمات والالتفاف. تبقى htmlFor محتاجة معرفا مطابقا ولا ينشئ الغلاف معلما تلقائيا. افحص السلوك بعد الترجمة؛ يثبت البناء المعالجة لا صحة التواصل.

الأخطاء الشائعة وإصلاحها

لا يستبدل الافتراضي null

لماذا يحدث؟
ينطبق التفكيك الافتراضي على undefined.
كيف تصلحه؟
عالج null صراحة وفق العقد.
كيف تتجنب تكراره؟
اختبر الحالات منفصلة.

ترفض JSX تعليمة داخل الأقواس

لماذا يحدث؟
احتوى موضع التعبير تعليمة تحكم.
كيف تصلحه؟
احسب القيمة قبل الإرجاع.
كيف تتجنب تكراره؟
سم المنطق المعقد.

يغير الابن بيانات الأب

لماذا يحدث؟
عدل كائن props.
كيف تصلحه؟
اقرأ المدخل واطلب التغيير برد نداء.
كيف تتجنب تكراره؟
وثق الملكية والتحديث الثابت.

اختبر فهمك

1. صمم واجهة سعر تتجنب الأعداد المبهمة.

اعرض الحل المشروح

استخدم amountCents وعملة أو سياسة تنسيق صريحة وتحقق قبل العرض واحفظ القراءة فقط. يبهم value الوحدة وقد يفسد تعديلها الحالة المشتركة.

2. متى يقبل الغلاف children بدلا من إعداد نصي طويل؟

اعرض الحل المشروح

استخدمها حين يركب الأب المحتوى ولا يقدم الغلاف إلا حدا مستقرا. أبق props لما يحتاجه الغلاف كالعنوان، دون اختراع لغة ترميز مصغرة.

أهم ما تعلمته

  • تنتج التعبيرات أوصافا لا HTML خاما.
  • props مدخلات عرض للقراءة.
  • يحتاج التركيب عقدا دلاليا.

المراجع الرسمية