#reactjs #search #filter
Вопрос:
Я работаю над функцией поиска и фильтрации. Когда я ввожу текст в поле поиска, содержимое, соответствующее критериям, будет отфильтровано. Я хочу использовать следующую функцию для достижения этой цели, но когда я печатаю, появляется сообщение «Ошибка типа: 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()))
}
})
}
Комментарии:
1. const [filterFn, setFilterFn] = …
Ответ №1:
Быстрое исправление … добавьте запятую…
const [,setFilterFn] = useState((items) => ( items));
это также выглядит так, как будто у вас могут быть проблемы с вашей логикой..
if (target.value != "")
Оператор здесь, вероятно, должен быть ===
таким, иначе вы будете фильтровать только пустые строки.
Ответ №2:
Взгляните на функцию useState , эта функция возвращает массив с двумя аргументами, первое значение состояния , второе — функция обратного вызова, которая изменит ваше значение satate. Вы предоставляете только одно значение, поэтому реагируйте, предполагая, что это значение, а не функция. Вы можете прочитать больше в документах