React Development

إصلاح الأعمدة في جداول React: دليل شامل

Spread the love

تُعدّ React Table أداةً قوية لعرض البيانات الجدولية، لكن إدارة الأعمدة الثابتة قد تكون صعبة. يوفر هذا الدليل نهجًا واضحًا محددًا للإصدار للحفاظ على الأعمدة ثابتة أثناء التمرير أفقيًا.

محتويات

استخدام react-table-sticky لـ React Table الإصدار 7 وما فوق

أدخل React Table الإصدار 7 تغييرات كبيرة في واجهة برمجة التطبيقات. بالنسبة للأعمدة الثابتة، يوفر react-table-sticky حلاً مبسطًا.

1. التثبيت

npm install react-table-sticky
# أو
yarn add react-table-sticky

2. التنفيذ

يوضح هذا المثال تثبيت عمود “ID” على اليسار:


import React from 'react';
import { useTable, useSticky } from 'react-table';
import { FixedColumnsTable } from 'react-table-sticky';

const data = [
  { id: 1, name: 'John Doe', age: 30, city: 'New York' },
  { id: 2, name: 'Jane Doe', age: 25, city: 'London' },
  // ... المزيد من البيانات
];

const columns = [
  { Header: 'ID', accessor: 'id', sticky: 'left' },
  { Header: 'الاسم', accessor: 'name' },
  { Header: 'العمر', accessor: 'age' },
  { Header: 'المدينة', accessor: 'city' },
];

function MyTable({ columns, data }) {
  const {
    getTableProps,
    getTableBodyProps,
    headerGroups,
    rows,
    prepareRow,
  } = useTable({ columns, data }, useSticky);

  return (
    <FixedColumnsTable {...getTableProps()}>
      <thead>
        {headerGroups.map(headerGroup => (
          <tr {...headerGroup.getHeaderGroupProps()}>
            {headerGroup.headers.map(column => (
              <th {...column.getHeaderProps()}>{column.render('Header')}</th>
            ))}
          </tr>
        ))}
      </thead>
      <tbody {...getTableBodyProps()}>
        {rows.map((row, i) => {
          prepareRow(row);
          return (
            <tr {...row.getRowProps()}>
              {row.cells.map(cell => (
                <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
              ))}
            </tr>
          );
        })}
      </tbody>
    </FixedColumnsTable>
  );
}

export default MyTable;

تجعل خاصية sticky: 'left' في تعريف العمود عمود “ID” ثابتًا. استخدم sticky: 'right' للأعمدة الثابتة على الجانب الأيمن.

استخدام react-table-hoc-fixed-columns لـ React Table الإصدار 6 وما دون

بالنسبة لإصدارات React Table الأقدم، يوفر react-table-hoc-fixed-columns حلاً باستخدام Higher-Order Components (HOCs).

1. التثبيت

npm install react-table-hoc-fixed-columns
# أو
yarn add react-table-hoc-fixed-columns

2. التنفيذ

يعتمد التنفيذ على إصدار React Table الخاص بك. راجع وثائق المكتبة للحصول على إرشادات مفصلة. يتضمن النهج العام لفّ مكون الجدول الخاص بك باستخدام HOC fixedColumns. مثال مبسط (راجع وثائق المكتبة للحصول على تفاصيل محددة للإصدار):


import React from 'react';
import { useTable } from 'react-table';
import { fixedColumns } from 'react-table-hoc-fixed-columns';

// ... تعريف البيانات والأعمدة ...

const MyTable = fixedColumns(({ getTableProps, ...rest }) => (
  <YourOriginalTableComponent {...rest} {...getTableProps()} />
));

// ... بقية المكون الخاص بك

راجع دائمًا الوثائق الرسمية لـ react-table-sticky و react-table-hoc-fixed-columns للحصول على المعلومات الأكثر دقة وتحديثًا.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *