在可搜索的反应选择下拉列表中呈现大量数据的最佳方法是什么?我查看了窗口化,其中 DOM 节点仅为在视口中可见的项目创建。这可以通过在 react-select 旁边使用 react-window 包来完成。但是,我想知道是否有比这更好的方法。
这是使用 react-window 和 react-select 的窗口实现
import React, { Component } from "react";
import ReactDOM from "react-dom";
import Select from "react-select";
import { FixedSizeList as List } from "react-window";
import "./styles.css";
const options = [];
for (let i = 0; i < 10000; i = i + 1) {
options.push({ value: i, label: `Option ${i}` });
}
const height = 35;
class MenuList extends Component {
render() {
const { options, children, maxHeight, getValue } = this.props;
const [value] = getValue();
const initialOffset = options.indexOf(value) * height;
return (
<List
height={maxHeight}
itemCount={children.length}
itemSize={height}
initialScrollOffset={initialOffset}
>
{({ index, style }) => <div style={style}>{children[index]}</div>}
</List>
);
}
}
const App = () => <Select components={{ MenuList }} options={options} />;
ReactDOM.render(<App />, document.getElementById("root"));