【发布时间】:2021-06-24 19:57:36
【问题描述】:
我正在尝试为一长串项目创建实时过滤搜索,项目采用数组的形式,其中包含带有字符串和对象的数组,如:
const items = [
["cats", [
{name: "name", img: "img/img.jpg"},
{name: "name2", img: "img2/img.jpg"},
...
]],
["dogs", [
{name: "name", img: "img/img.jpg"},
{name: "name2", img: "img2/img.jpg"},
...
]],
...
]
我正在尝试按名称值过滤它。
我尝试的是:
export default function Page({ items }) {
const [searchTerm, setSearchTerm] = React.useState("");
const [searchResults, setSearchResults] = React.useState(items);
const handleChange = event => {
setSearchTerm(event.target.value);
}
useEffect(() => {
var f=0, results = []
while (f < items.length){
if(items[f][1].includes(searchTerm)){
results.push(result)
}
f++
}
setSearchResults(results);
}, [searchTerm]);
return (
<div>
<input
type="text"
placeholder="Search"
value={searchTerm}
onChange={handleChange}
/>
{searchResults.map((cl, index) => (
<div key={index}>
<h2>{cl[0]}</h2>
<ScrollContainer>
{cl[1].map((item, i) => (
<h3>{item.name}</h1>
))}
</ScrollContainer>
</div>
))}
但它会引发错误:
ChunkLoadError: 加载块 0 失败。
【问题讨论】:
-
不要使用
index作为迭代map函数的键。它会降低您的应用程序速度,也是奇怪错误的根源。 reactjs 将使用它进行比较,从您的 Array Items 中添加一个唯一的字符串名称。
标签: javascript reactjs search filter