我有一个自动完成输入字段,并且在最初将输出隐藏在我的数组中时遇到了问题。而不是在安装时显示我的所有项目,我只想显示匹配的字符串。让我的状态为空const [filteredRecipes, setFilteredRecipes] = useState();
会在我的循环中引发错误。
Codesanbox: https ://codesandbox.io/s/quzwg?file=/App.js:251-313
JS:
export default function App() {
const items = useMemo(
() => ["item1", "item2", "anotheritem", "yetanotheritem", "myitem"],
[]
);
const [search, setSearch] = useState("");
const [filteredRecipes, setFilteredRecipes] = useState(items);
const handleSearchChange = event => {
setSearch(event.target.value);
};
useEffect(() => {
setFilteredRecipes(
items.filter(el => el.toLowerCase().includes(search.toLowerCase()))
);
}, [search, items]);
return (
<div>
<input
type="search"
placeholder="type here to filter"
value={search}
onChange={handleSearchChange}
/>
<div>
{filteredRecipes.map(recipe => (
<p>{recipe}</p>
))}
</div>
</div>
);
}