【发布时间】:2021-06-11 18:53:43
【问题描述】:
我正在使用react-virtuoso 库来呈现一个简单的虚拟列表。代码非常简单。我通过了这个 overscan 道具并期望虚拟列表在视口上方和下方呈现 n 项目,但它不起作用。
当我上下滚动一点时,ExpensiveComponents 仍然呈现“正在加载...”文本。代码如下:
import { Virtuoso } from "react-virtuoso";
import { useEffect, useState, useRef, PropsWithChildren } from "react";
function ExpensiveComponent({ children }: PropsWithChildren<{}>) {
const [render, setRender] = useState(false);
const mountRef = useRef(false);
useEffect(() => {
mountRef.current = true;
setTimeout(() => {
if (mountRef.current) {
setRender(true);
}
}, 150);
return () => void (mountRef.current = false);
}, []);
return (
<div style={{ height: 150, border: "1px solid pink" }}>
{render ? children : "Loading..."}
</div>
);
}
用法
function App() {
return (
<Virtuoso
style={{ height: "400px" }}
totalCount={200}
overscan={3} // ----------> this line does not work
itemContent={(index) => {
return <ExpensiveComponent>{index}</ExpensiveComponent>;
}}
/>
);
}
【问题讨论】:
标签: javascript reactjs react-virtuoso