العودة للدورة|مقابلات مهندس الواجهات الأمامية: إتقان React وتصميم الأنظمة وأداء الويب
معمل

بناء جدول بيانات قابل للبحث

25 دقيقة
متوسط
3 المحاولات المجانية

التعليمات

الهدف

ابنِ مكون React <DataTable> يتعامل مع مجموعات بيانات كبيرة بكفاءة. هذا تحدٍ شائع في مهام المقابلات المنزلية للواجهات الأمامية.

المتطلبات

1. البحث/التصفية

  • حقل نصي يُصفي الصفوف عبر جميع الأعمدة
  • إدخال مؤجل (300 مللي ثانية) لتجنب التصفية عند كل ضغطة مفتاح
  • عرض عدد النتائج المطابقة

2. الترتيب

  • النقر على رؤوس الأعمدة للترتيب تصاعديًا/تنازليًا
  • مؤشر مرئي لعمود الترتيب الحالي واتجاهه
  • دعم ترتيب السلاسل النصية والأرقام بشكل صحيح

3. ترقيم الصفحات

  • عرض 20 صفًا لكل صفحة
  • تنقل السابق/التالي
  • عرض رقم الصفحة الحالية وإجمالي الصفحات
  • إعادة التعيين للصفحة 1 عند تغيير استعلام البحث

4. الأداء

  • يجب التعامل مع 10,000+ صف بدون تأخر ملحوظ
  • البحث والترتيب يجب أن يشعرا بأنهما فوريان (< 100 مللي ثانية)
  • تقليل إعادة العروض غير الضرورية

5. التنقل بلوحة المفاتيح

  • السهم لأعلى/لأسفل للتنقل بين الصفوف
  • Enter لتحديد صف
  • Escape لمسح البحث

مخطط البيانات

يجب أن يعمل مكونك مع شكل البيانات هذا:

interface User {
  id: number;
  name: string;
  email: string;
  role: string;
  department: string;
  salary: number;
  joinDate: string; // سلسلة تاريخ ISO
}

interface DataTableProps {
  data: User[];
  columns: {
    key: keyof User;
    label: string;
    sortable?: boolean;
  }[];
}

مثال على الاستخدام

<DataTable
  data={users}
  columns={[
    { key: 'name', label: 'الاسم', sortable: true },
    { key: 'email', label: 'البريد', sortable: true },
    { key: 'role', label: 'الدور', sortable: true },
    { key: 'department', label: 'القسم', sortable: true },
    { key: 'salary', label: 'الراتب', sortable: true },
  ]}
/>

تلميحات

  • استخدم useMemo لتخزين النتائج المصفاة والمرتبة مؤقتًا
  • استخدم useCallback لمعالجات الأحداث المُمررة للمكونات الفرعية
  • فكّر في useRef لإدارة تركيز حقل البحث
  • أجّل البحث باستخدام خطاف useDebounce مخصص
  • لأكثر من 10 آلاف صف، فكّر في عرض الصفوف المرئية فقط (المحاكاة الافتراضية) أو اعتمد على ترقيم الصفحات

ما يجب تقديمه

يجب أن يحتوي تقديمك على قسم ملف واحد في المحرر أدناه: ملف مكون React يحتوي على مكون DataTable وخطاف useDebounce.

معايير التقييم

البحث/التصفية: حقل نصي مؤجل يُصفي عبر جميع الأعمدة مع عرض عدد النتائج20 نقاط
الترتيب: رؤوس الأعمدة تبدّل الترتيب التصاعدي/التنازلي مع مؤشرات مرئية، يتعامل مع أنواع السلاسل والأرقام20 نقاط
ترقيم الصفحات: 20 صفًا لكل صفحة، تنقل السابق/التالي، عداد الصفحات، إعادة تعيين عند تغيير البحث20 نقاط
الأداء: يستخدم useMemo للبيانات المحسوبة، useCallback للمعالجات، يتعامل مع 10 آلاف+ صف بكفاءة20 نقاط
التنقل بلوحة المفاتيح: مفاتيح الأسهم تتنقل بين الصفوف، Enter يحدد، Escape يمسح البحث20 نقاط

قائمة التحقق

0/9

حلك

3 محاولات مجانية متبقية
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.