تقسيم الصفحة إلى أجزاء منظمة وتجهيز ملفات المشروع
فهم المجلدات الثلاثة الرئيسية في المشروع وكيف نقسم الصفحة إلى أقسام وبطاقات مرتبة
ماذا ستتعلم وتنجز في هذه الجلسة؟ (اضغط للعرض)▼
- إنشاء مكونات Button و Card و Badge مشتركة قابلة للتخصيص
النشاط 01: تفكيك الواجهة إلى مكونات React مستقلة
حول كود الزر والشارة إلى مكونات ذكية يمكن إعادة استخدامها في مئات الأماكن
أبني مكون Button يقبل خصائص مختلفة مثل الحجم واللون والنص والأيقونة.
في المشاريع الحقيقية، لا نكرر كتابة كود الزر في كل صفحة؛ بل نعدله في ملف واحد ليتحدث تلقائياً في كامل الموقع.
2. خطوات التنفيذ خطوة بخطوة:
أنشئ ملف المكون وحدد واجهة الـ Props باستخدام TypeScript.
مرر الأطفال (children) أو النص كـ Prop.
استخدم المكون المخصص داخل صفحتك واستدعِه 3 مرات بألوان مختلفة.
مكون Button قابل للتخصيص وإعادة الاستخدام في كل أجزاء تطبيقك.
📄 قالب البداية أو الكود المساعد (اضغط للعرض أو النسخ)▼
interface ButtonProps {
children: React.ReactNode;
variant?: 'primary' | 'secondary' | 'outline';
onClick?: () => void;
}
export const CustomButton: React.FC<ButtonProps> = ({
children,
variant = 'primary',
onClick,
}) => {
const styles = {
primary: 'bg-blue-600 text-white hover:bg-blue-700',
secondary: 'bg-slate-100 text-slate-800 hover:bg-slate-200',
outline: 'border border-slate-300 text-slate-700 hover:bg-slate-50',
};
return (
<button
onClick={onClick}
className={`px-4 py-2 rounded-xl text-xs font-bold transition-all ${styles[variant]}`}
>
{children}
</button>
);
};تلميحات مساعدة (1)▼
- • 💡 استخدم قيمة افتراضية للخصائص مثل variant = "primary" لتسهيل الاستخدام.
4. مساحة الحل وتسليم النتيجة عبر واتساب
اكتب إجابتك أو الكود أو رابط عملك في الصندوق أدناه. تُحفظ مسودتك تلقائيًا في متصفحك، وعند الضغط على «إرسال النتيجة عبر واتساب» سيتم حفظ الإجابة في سجل تقدمك وفتح رسالة واتساب جاهزة لإرسالها للمدرب (+90 538 201 50 72).