نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

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

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
REA

منهج React Js

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج React Js/تمرير البيانات إلى المكونات باستخدام الـ Props

تمرير البيانات إلى المكونات باستخدام الـ Props

شرح Props في ريأكتتمرير البيانات بين المكوناتما هو propsكورس React كاملتعلم ريأكتتعلم ريأكت بالعربي

جدول مرجعي سريع

1

تمرير البيانات إلى المكونات باستخدام الـ Props

المفهوم الهندسيطبيعة البيانات في ريأكتالتأثير البرمجي المباشر
الخصائص Propsكائن ذكي يجمع كل البيانات الممررة من المكون الأب إلى المكون الابنيسمح بتغذية نفس المكون ببيانات وصور ونصوص مختلفة تماماً في كل مرة
القراءة فقط Read-Onlyخاصية صارمة تمنع المكون الابن من تعديل أو تغيير الـ props القادمة إليهتضمن استقرار النظام ومنع العشوائية البرمجية في تتبع تدفق البيانات
تفكيك الكائن Destructuringصياغة جافا سكريبت حديثة لاستخراج المتغيرات من كائن props مباشرةتجعل الكود نظيفاً للغاية وتغني المطور عن تكرار كلمة props قبل كل متغير

الشرح

في الدرس السابق، قمنا ببناء مكون <ProductCard/> وكررناه ثلاث مرات، لكنك لاحظت بالتأكيد مشكلة واضحة: البطاقات الثلاث ظهرت بنفس الاسم ونفس السعر تماماً! في الواقع العملي، نريد أن يعرض المكون اسم وسعر وصورة كل منتج بشكل مختلف بناءً على البيانات القادمة من قاعدة البيانات.

هنا يأتي دور Props (مختصر Properties أو الخصائص)، وهي الوسيلة الرسمية والهندسية التي تتيح للمكونات التحدث مع بعضها وتمرير البيانات من المكون الأب (Parent) إلى المكون الابن (Child).

1. ما هي الـ Props وكيف تعمل؟

تخيل الـ Props مثل المعاملات (Arguments) التي تمررها لأي دالة عادية في جافا سكريبت لكي تنتج لك مخرجات مختلفة بناءً على المدخلات.

  • من جانب الأب: يقوم بتمرير البيانات للمكون الابن تماماً كأنه يكتب سمات HTML عادية (مثل: title="كورس ريأكت").
  • من جانب الابن: تستقبل دالة المكون معاملًا واحداً عبارة عن كائن (Object) يحتوي على كل البيانات التي أرسلها الأب.

ℹ️ معلومة

الـ Props في ريأكت هي للقراءة فقط (Read-Only) وتُسمى تقنياً Immutable. هذا يعني أن المكون الابن الذي استقبل البيانات يُحظر عليه تماماً محاولة تعديل قيمة الـ props القادمة إليه يدوياً؛ لأن البيانات في ريأكت تتدفق في اتجاه واحد صارم (من الأعلى للأسفل)، وأي محاولة لتعديلها من الأسفل ستتسبب في انهيار منطق التطبيق.

الأكواد البرمجية والتطبيق العملي

دعنا نرى التطبيق الفعلي لكيفية إرسال البيانات من الأب وتفكيكها بذكاء داخل المكون الابن باستخدام الصياغة الحديثة لجافا سكريبت (Destructuring):

1. ملف المكون الابن الديناميكي (CourseCard.jsx):

CourseCard.jsx

CourseCard.jsx
1// بدلاً من كتابة (props) ثم كتابة props.title، نقوم بتفكيك الكائن فوراً داخل الأقواس { }
2function CourseCard({ title, price, instructor }) {
3 return (
4 <div style={{ border: '2px solid #673ab7', padding: '20px', borderRadius: '10px', margin: '15px' }}>
5 {/* استقبال وعرض البيانات الديناميكية القادمة من الأب */}
6 <h3 style={{ color: '#673ab7' }}>{title}</h3>
7 <p>المحاضر: {instructor}</p>
8 <p>السعر: <strong>{price} $</strong></p>
9 <button style={{ backgroundColor: '#673ab7', color: '#fff', border: 'none', padding: '10px', borderRadius: '5px', cursor: 'pointer' }}>
10 ابدأ التعلم الآن
11 </button>
12 </div>
13 );
14}
15
16export default CourseCard;

2. ملف المكون الأب المغذي للبيانات (App.jsx):

App.jsx

App.jsx
1import CourseCard from './CourseCard';
2
3function App() {
4 return (
5 <div className="app-container">
6 <h2>لوحة تحكم كورسات نوفيل البرمجية</h2>
7
8 {/* تمرير بيانات فريدة ومختلفة لكل مكون ابن عبر الـ Props */}
9 <CourseCard
10 title="كورس ريأكت للمحترفين"
11 price={49.99}
12 instructor="أحمد المهندس"
13 />
14
15 <CourseCard
16 title="بناء الواجهات باستخدام Tailwind CSS"
17 price={29.99}
18 instructor="سارة علي"
19 />
20
21 <CourseCard
22 title="مقدمة في Node.js و Express"
23 price={39.99}
24 instructor="حسن البرمجي"
25 />
26 </div>
27 );
28}
29
30export default App;

نصائح احترافية

  • —عندما تمرر نصوصاً عادية (Strings) عبر الـ Props، يمكنك استخدام علامات التنصيص المباشرة هكذا: title="كورس ريأكت".
  • —ولكن، إذا كنت تريد تمرير أي نوع بيانات آخر (مثل الأرقام Numbers أو القيم المنطقية Booleans أو المصفوفات Arrays أو الكائنات Objects)، يجب حتماً وضعها داخل الأقواس المجعدة { } كما فعلنا مع السعر {49.99}؛ لأن الأقواس هنا تخبر المترجم أن يعامل القيمة الممررة بنوعها البرمجي الأصلي كـ Number وليس كمجرد نص عادي، مما يتيح لك إجراء العمليات الحسابية عليها داخل المكون الابن دون مشاكل تحويل الأنواع!

الدرس السابق

مفهوم المكونات What is a Component

الدرس التالي

خاصية props.children في react js

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

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

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر