【发布时间】:2020-11-21 12:28:53
【问题描述】:
我正在尝试搜索包含 15000 多个值的数组。我想使用 react-autocomplete 来做到这一点,并使用 react-virtualized List 组件呈现如此大的数据列表。
这是我的尝试。我面临的问题是我无法在搜索栏中输入任何内容,不知道为什么。随意编辑我当前的代码或完全重写/重构代码,因为我仍在测试最好的方法是什么。
***在codesandbox中没有渲染 https://codesandbox.io/s/nifty-meninsky-qirjk?file=/src/index.js
在我的本地计算机上,当我单击搜索栏时会呈现列表,但我无法在框中输入内容
let searchBar;
let searchingFor;
if (clientList !== undefined) {
const renderItem = (item) => {
return <div>{item.name}</div>;
};
const onSelect = (item) => this.setState({ selection: item });
console.log(clientList[1].clientName);
const renderMenu = (items, searchingFor, autocompleteStyles) => {
return (
<List
width={500}
height={600}
rowHeight={50}
rowCount={clientList.length}
rowRenderer={({ key, index, style, parent }) => {
const client = clientList[index];
return (
<div key={key} style={style}>
{" "}
<h2>{client.clientName}</h2>
</div>
);
}}
/>
);
};
const searchTerm = searchingFor;
let data = searchTerm
? clientList.filter((item) => item.clientName.includes(searchTerm))
: [];
searchBar = (
<div>
{" "}
<Autocomplete
renderItem={renderItem}
items={data}
getItemValue={(item) => item.clientName}
value={searchingFor}
onChange={(e, value) => (searchingFor = value)}
onSelect={onSelect}
renderMenu={renderMenu}
/>
</div>
);
}
return (
<div>
<Grid container>
<Box>{searchBar} </Box>
</Grid>
</div>
);
【问题讨论】:
标签: javascript reactjs autocomplete react-virtualized