fix: re-render issues for report-table
This commit is contained in:
@@ -13,7 +13,6 @@ import {
|
|||||||
getCoreRowModel,
|
getCoreRowModel,
|
||||||
getExpandedRowModel,
|
getExpandedRowModel,
|
||||||
getFilteredRowModel,
|
getFilteredRowModel,
|
||||||
getSortedRowModel,
|
|
||||||
useReactTable,
|
useReactTable,
|
||||||
} from '@tanstack/react-table';
|
} from '@tanstack/react-table';
|
||||||
import {
|
import {
|
||||||
@@ -26,15 +25,12 @@ import { ChevronDown, ChevronRight } from 'lucide-react';
|
|||||||
import type * as React from 'react';
|
import type * as React from 'react';
|
||||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
|
||||||
import { Tooltiper } from '@/components/ui/tooltip';
|
|
||||||
import { ReportTableToolbar } from './report-table-toolbar';
|
import { ReportTableToolbar } from './report-table-toolbar';
|
||||||
import {
|
import {
|
||||||
type ExpandableTableRow,
|
type ExpandableTableRow,
|
||||||
type GroupedItem,
|
|
||||||
type GroupedTableRow,
|
type GroupedTableRow,
|
||||||
type TableRow,
|
type TableRow,
|
||||||
groupsToExpandableRows,
|
groupsToExpandableRows,
|
||||||
groupsToTableRows,
|
|
||||||
transformToHierarchicalGroups,
|
transformToHierarchicalGroups,
|
||||||
transformToTableData,
|
transformToTableData,
|
||||||
} from './report-table-utils';
|
} from './report-table-utils';
|
||||||
@@ -1151,14 +1147,10 @@ export function ReportTable({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Get the row model to use (expanded when grouped, regular otherwise)
|
// Get the row model to use (expanded when grouped, regular otherwise)
|
||||||
// filteredRows is already sorted, so getExpandedRowModel/getRowModel should preserve that order
|
// Always call the table helpers so React Table can manage its own memoization
|
||||||
// We need to recalculate when filteredRows changes to ensure sorting is applied
|
const rowModelToUse = grouped
|
||||||
const rowModelToUse = useMemo(() => {
|
? table.getExpandedRowModel()
|
||||||
if (grouped) {
|
: table.getRowModel();
|
||||||
return table.getExpandedRowModel();
|
|
||||||
}
|
|
||||||
return table.getRowModel();
|
|
||||||
}, [table, grouped, expanded, filteredRows.length, sorting]);
|
|
||||||
|
|
||||||
const virtualizer = useWindowVirtualizer({
|
const virtualizer = useWindowVirtualizer({
|
||||||
count: rowModelToUse.rows.length,
|
count: rowModelToUse.rows.length,
|
||||||
|
|||||||
Reference in New Issue
Block a user