شرح صفوف ومحتوى الفقرة
متى أمكن حساب قيمة بالكامل اعتماداً على props أو state الموجودة بالفعل — مثل دمج الاسم الكامل، أو تصفية قائمة الدورات، أو جمع إجمالي الساعات — فلا تضعها في حالة مستقلة ولا تحدثها عبر useEffect أبداً.
احسبها مباشرة كمتغير const عادي في جسم دالة المكون لتكون محدثة ودقيقة بنسبة 100% منذ دورة التصيير الأولى.
HTML
const [query, setQuery] = useState('');
const visible = COURSES.filter((c) =>
c.title.toLowerCase().includes(query.toLowerCase())
);
const totalHours = visible.reduce(
(sum, c) => sum + c.hours,
0
);