import { Table } from 'antd'; import classNames from 'classnames'; import ResizeObserver from 'rc-resize-observer'; import React, { useEffect, useRef, useState } from 'react'; import { VariableSizeGrid as Grid } from 'react-window'; const VirtualTable = (props) => { const { columns, scroll, table2Data } = props; debugger const [tableWidth, setTableWidth] = useState(0); const widthColumnCount = columns.filter(({ width }) => !width).length; const mergedColumns = columns.map((column) => { if (column.width) { return column; } return { ...column, width: Math.floor(tableWidth / widthColumnCount), }; }); console.log("mergedColumns", mergedColumns); console.log("props",{...props}); const gridRef = useRef(); const [connectObject] = useState(() => { const obj = {}; Object.defineProperty(obj, 'scrollLeft', { get: () => { if (gridRef.current) { return gridRef.current?.state?.scrollLeft; } return null; }, set: (scrollLeft) => { if (gridRef.current) { gridRef.current.scrollTo({ scrollLeft, }); } }, }); return obj; }); const resetVirtualGrid = () => { gridRef.current?.resetAfterIndices({ columnIndex: 0, shouldForceUpdate: true, }); }; useEffect(() => resetVirtualGrid, [tableWidth]); const renderVirtualList = (rawData, { scrollbarSize, ref, onScroll }) => { ref.current = connectObject; const totalHeight = rawData.length * 54; return ( { const { width } = mergedColumns[index]; let myWidth = width if(mergedColumns[index]?.children?.length>0){ myWidth = width*(mergedColumns[index]?.children?.length) } return totalHeight > scroll.y && index === mergedColumns.length - 1 ? myWidth - scrollbarSize - 1 : myWidth; }} height={scroll.y} rowCount={rawData.length} rowHeight={() => 54} width={tableWidth} onScroll={({ scrollLeft }) => { onScroll({ scrollLeft, }); }} > {({ columnIndex, rowIndex, style }) => { return (
{rawData[rowIndex][mergedColumns[columnIndex].dataIndex]}
) }}
); }; return ( { setTableWidth(width); }} > { return( 最大值 {table2Data?.length > 0 && table2Data.map((item,i) => {item?.maxValue ?? "-"})} 日期 {table2Data?.length > 0 && table2Data.map((item,i) => {item?.maxTm?? "-"})} 全年度特征值统计 最小值 {table2Data?.length > 0 && table2Data.map((item,i) => {item?.minValue ?? "-"})} 日期 {table2Data?.length > 0 && table2Data.map((item,i) => {item?.minTm?? "-"})} 年变幅 {table2Data?.length > 0 && table2Data.map((item,i) => {item?.diff?? "-"})} ) }} /> ); }; const App = ({columns,dataSource,width,loading,table2Data}) => ( ); export default App;