diff --git a/src/VirtualTable/BodyGrid.tsx b/src/VirtualTable/BodyGrid.tsx index e157281ba..6257153aa 100644 --- a/src/VirtualTable/BodyGrid.tsx +++ b/src/VirtualTable/BodyGrid.tsx @@ -6,6 +6,7 @@ import useFlattenRecords, { type FlattenData } from '../hooks/useFlattenRecords' import type { ColumnType, OnCustomizeScroll, ScrollConfig } from '../interface'; import BodyLine from './BodyLine'; import { GridContext, StaticContext } from './context'; +import { getColumnsKey } from '../utils/valueUtil'; export interface GridProps { data: RecordType[]; @@ -58,7 +59,9 @@ const Grid = React.forwardRef((props, ref) => { // ========================== Column ========================== const columnsWidth = React.useMemo<[key: React.Key, width: number, total: number][]>(() => { let total = 0; - return flattenColumns.map(({ width, minWidth, key }) => { + const columnKeys = getColumnsKey(flattenColumns); + return flattenColumns.map(({ width, minWidth }, index) => { + const key = columnKeys[index]; const finalWidth = Math.max((width as number) || 0, (minWidth as number) || 0); total += finalWidth; return [key, finalWidth, total]; diff --git a/src/utils/valueUtil.tsx b/src/utils/valueUtil.tsx index 56f6fef4f..0b196dea0 100644 --- a/src/utils/valueUtil.tsx +++ b/src/utils/valueUtil.tsx @@ -21,7 +21,7 @@ export function getColumnsKey(columns: readonly GetColumnKeyColumn[] columns.forEach(column => { const { key, dataIndex } = column || {}; - let mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX; + let mergedKey = key ?? (toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX); while (keys[mergedKey as string]) { mergedKey = `${mergedKey}_next`; }