我正在研究搜索和过滤功能。当我在搜索框中输入文本时,匹配条件的内容将被过滤掉。我想使用下面的函数来实现这一点,但是当我键入时,"TypeError: setFilterFn不是一个函数">将会发生。我不知道哪里出了问题,我该怎么解决?非常感谢!
const [setFilterFn] = useState({ fn: items => { return items; } })
const handleSearch = e => {
let target = e.target;
setFilterFn({
fn: items => {
if (target.value != "")
return items;
else
return items.filter(item => item.fullName.toLowerCase().includes(target.value.toLowerCase()))
}
})
}
快速修复…加逗号…
const [,setFilterFn] = useState((items) => ( items));
看起来你的逻辑也有问题。
if (target.value != "")
这里的运算符应该是===
,否则你只会过滤空字符串。
看一下useState函数,该函数返回数组与两个参数,第一个值的状态,第二个是回调函数,将改变你的状态值。您只提供了一个值,所以反应假设是值而不是函数。你可以在docs
中阅读更多内容