一个页面渲染 10,000 条数据时,最先拖垮体验的通常不是接口,而是浏览器同时维护了 10,000 个行节点:React 要协调更多元素,浏览器要计算更多样式与布局,图片和事件也会放大内存压力。React.memo只能减少部分重复渲染,不能让已经存在的 10,000 个 DOM 节点消失。真正有效的优化顺序是:TanStack Query → 服务端数据缓存 │ ▼ useDeferredValue + useMemo → 延后非紧急搜索结果 │ ▼ TanStack Virtual → 只渲染视口附近的 DOM │ ▼ 稳定 key / 稳定 props / memo → 缩小 React 更新范围 │ ▼ React DevTools Profiler → 证明瓶颈和收益本文用 React 19、TypeScript、TanStack Query 与 TanStack Virtual 实现一个可直接迁移到后台系统、资讯流和日志查看器的完整方案。一、先判断:列表为什么慢长列表性能至少包含三类成本:React 协调成本:父组件变化后,大量子元素被重新执行和比较;DOM 与布局成本:节点越多,样式计算、布局、绘制和内存成本越高;业务工作成本: