Ant Design Select 内置了 virtualized 属性,可以开启虚拟滚动渲染。虚拟滚动渲染会在滚动时只渲染可视区域内的选项,避免滚动时出现大量选项出现在屏幕中。
示例代码:
import React from 'react'; import { Select } from 'antd';
const { Option } = Select;
const options = ['jack', 'lucy', 'tom', 'tim', 'harry', 'mia', 'john', 'paul', 'george', 'ringo', 'justin', 'selena', 'taylor', 'ariana'];
const VirtualSelect = () => ( );
export default VirtualSelect;
对于大量选项的情况,建议使用 react-window 动态渲染。react-window 是一个用于视窗化渲染大型列表和表格的库,可以在每个选项之间添加滚动容器。
示例代码:
import React from 'react'; import { FixedSizeList as List } from 'react-window'; import { Select } from 'antd';
const { Option } = Select;
const options = [...Array(10000)].map((_, index) => Option ${index}
);
const DynamicSelect = () => { const renderListItem = ({ index, style }) => (
return ( ); };
export default DynamicSelect;