固定高度虚拟列表
import {FixedSizeList} from 'react-window'
// import FixedSizeList from './FixedSizeList'
import './Fixed.css'
// 渲染的每一行的 item 项
function Row({index, style}) {
return <div className={index % 2 ? 'odd': 'even'} style={style}>
Row {index}
</div>
}
function App() {
// 可视区的宽高 200,每一项高度 50,列表总数 1000
return <FixedSizeList className='list' height={200} width={200} itemSize={50} itemCount={1000}>
{Row}
</FixedSizeList>
}
export default App
不定高度虚拟列表
import { VariableSizeList } from "react-window";
// import VariableSizeList from "./VariableSizeList.js";
import "./Fixed.css";
// 这里给出每个元素的高度计算方式,可以根据自己的业务需求按条件计算,这里简单给出随机获取
const rowSizes = new Array(1000).fill(true).map(() => 25 + Math.round(Math.random() * 55))
const getItemSize = index => rowSizes[index]
function Row({ index, style }) {
return (
<div className={index % 2 ? "odd" : "even"} style={style}>
Row {index}
</div>
);
}
function App() {
return (
<VariableSizeList
className="list"
height={200}
width={200}
itemSize={getItemSize}
itemCount={1000}
>
{Row}
</VariableSizeList>
);
}
export default App;
css样式
.list {
border: 1px solid gray;
}
.odd, .even {
display: flex;
align-items: center;
justify-content: center;
}
.odd {
background-color: pink;
}
.even {
background-color: antiquewhite;
}