Weboldal keresés

reactjs - React Table (Tanstack) feltételesen alkalmazzon osztályt a th elemre


A @tanstack/react-table v8.5.13 verzióját használom. Próbálok itt valami igazán egyszerűt csinálni, de úgy tűnik, nem találok módot rá a dokumentációban.

Az asztalomnak két fejlécje van (egy fejléc és egy alkifejléc, amit lent definiáltunk)

const columnHelper = createColumnHelper<ITableData>();

const columns = [
  columnHelper.group({
    id: 'Header',
    header: () => <Button variant='outlined'>Show all</Button>,
    columns: [
      columnHelper.accessor('header_sublevel', {
        header: () => <span>Secondary Header</span>,
        cell: (info) => info.getValue()
      })
    ]
  })
];

Így jelenítem meg az adatokat.

export default function MyTableComponent {
  const data = useAppSelector(state => state.table.data);
  const table = useReactTable<IListPrice>({
    data: listPriceData,
    columns,
    getCoreRowModel: getCoreRowModel()
  });

  return (
    <div
      ref={virtualizedTableContainerRef}
      style={{ padding: '1rem' }}
      className='virtualized-table-container'
    >
      <table>
        <thead>
          {table.getHeaderGroups().map((headerGroup) => (
            <tr key={headerGroup.id}>
              {headerGroup.headers.map((header) => (
                <th
                  key={header.id}
                  colSpan={header.colSpan}
                >
                  {header.isPlaceholder
                    ? null
                    : flexRender(header.column.columnDef.header, header.getContext())}
                </th>
              ))}
            </tr>
          ))}
        </thead>
        <tbody>
          {table.getRowModel().rows.map((row) => (
            <tr key={row.id}>
              {row.getVisibleCells().map((cell) => (
                <td key={cell.id}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</td>
              ))}
            </tr>
          ))}
        </tbody>
        <tfoot>
          {table.getFooterGroups().map((footerGroup) => (
            <tr key={footerGroup.id}>
              {footerGroup.headers.map((header) => (
                <th key={header.id} colSpan={header.colSpan}>
                  {header.isPlaceholder
                    ? null
                    : flexRender(header.column.columnDef.footer, header.getContext())}
                </th>
              ))}
            </tr>
          ))}
        </tfoot>
      </table>
      <div className='h-4' />
    </div>
  );

Mit akarok? Megpróbálok egy osztályt hozzáadni a th elemek második sorához, hogy stílust alkalmazhassak rájuk. Az alább látható a generált HTML kódban megjelenő tartalom.

Mit próbáltam eddig? Egy megoldás, ami eszembe jutott, hogy a fejléc mélységétől függően alkalmazhatnék osztályt, de úgy tűnik, ez túlzás lenne. Vélemények?

A getHeaderProps metódus nem elérhető a fejlécen, ami a react-table v7-ben még elérhető volt. Áthelyezték vagy eltávolították a v8-ban?