Реагировать на поиск и фильтрацию: ошибка типа: setFilterFn не является функцией

#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. Вы предоставляете только одно значение, поэтому реагируйте, предполагая, что это значение, а не функция. Вы можете прочитать больше в документах