جاري التحميل...
جاري التحميل...
بناء تطبيق إدارة مهام كامل
تهانينا على وصولك إلى المشروع الأخير! في هذا المشروع، ستطبيق كل ما تعلمته طوال هذه الدورة لبناء تطبيق React كامل من الصفر.
هذا المشروع مصمم لاختبار فهمك لمفاهيم React وتجربتك العملية في بناء تطبيق حقيقي.
ستبني تطبيق إدارة مهام كامل يسمح للمستخدمين بـ:
يجب أن يستوفي تطبيقك هذه المتطلبات:
ابدأ بإنشاء مشروع React جديد باستخدام Create React App.
حدد هياكل بياناتك قبل كتابة أي كود:
أنشئ إدارة الحالة العامة:
ابنِ مكوناتك بهذا الترتيب:
نفذ عمليات الإنشاء والقراءة والتحديث والحذف:
أضف حفظ التخزين المحلي لحفظ المهام:
نفذ تبديل السمة الفاتحة/الداكنة:
عند الانتهاء، أرسل تطبيقك المكتمل. سيتم تقييم إرسالك بناءً على:
ما هي الطريقة المُوصى بها لإدارة الحالة العامة في تطبيق React؟
ابنِ تطبيق إدارة مهام كامل باستخدام جميع مفاهيم React التي تعلمتها. يجب أن يدعم التطبيق عمليات CRUD والتصفية والترتيب وتبديل السمة.
الحل:
// Enhanced TaskInput with categories and priorities
function TaskInput() {
const [text, setText] = useState("");
const [category, setCategory] = useState("personal");
const [priority, setPriority] = useState("medium");
const { addTask } = useTasks();
function handleSubmit(e) {
e.preventDefault();
if (!text.trim()) return;
addTask({ text: text.trim(), category, priority });
setText("");
}
return (
<form onSubmit={handleSubmit}>
<input value={text} onChange={e => setText(e.target.value)} placeholder="مهمة جديدة..." />
<select value={category} onChange={e => setCategory(e.target.value)}>
<option value="work">عمل</option>
<option value="personal">شخصي</option>
<option value="study">دراسة</option>
</select>
<select value={priority} onChange={e => setPriority(e.target.value)}>
<option value="high">عالية</option>
<option value="medium">متوسطة</option>
<option value="low">منخفضة</option>
</select>
<button type="submit">إضافة</button>
</form>
);
}المفاهيم الأساسية:
الميزات:
كيف تدير الحالة المعقدة في مشروع حقيقي؟
الإجابة:
استخدم Context + useReducer أو مكتبة إدارة حالة مثل Zustand.
ما هي أفضل طريقة لتنظيم ملفات المشروع؟
الإجابة:
حسب الميزة: features/auth, features/tasks. وليس حسب النوع: components, hooks.