'use client' import { useRef } from 'react' import { useVirtualizer } from '@tanstack/react-virtual' import { Level } from '@/types' import { GRID_TEMPLATE, LevelRow } from './level-row' interface LevelTableProps { levels: Level[] onEdit: (level: Level) => void onDelete: (id: string) => void } const HEADER_COLUMNS = [ '序号', '图片', '答案', '谐音梗', '提示', '创建时间', '操作', ] export function LevelTable({ levels, onEdit, onDelete }: LevelTableProps) { const scrollRef = useRef(null) const items = levels const rowVirtualizer = useVirtualizer({ count: items.length, getScrollElement: () => scrollRef.current, estimateSize: () => 64, overscan: 10, }) if (items.length === 0) { return (

暂无关卡数据

点击上方“添加关卡”按钮创建第一个关卡

) } return (
{/* 表头 */}
{HEADER_COLUMNS.map((h, i) => ( {h} ))}
{/* 虚拟滚动 */}
{rowVirtualizer.getVirtualItems().map((v) => { const level = items[v.index] return (
) })}
共 {items.length} 条 · 在编辑 / 创建弹窗中指定位置可调整顺序
) }