Я пытаюсь использовать функцию debounce
, чтобы избежать множественных вызовов, когда я печатаю и ищу что-то в таблице данных. То, что я делаю сейчас, находится на входе
onChange={(e) => {
const delayedQuery = useCallback(debounce(this.handleSearch(e.target.value), 500));
return delayedQuery
}}
где handeSearch
handleSearch(filter) {
service.getData(filter).subscribe((data) => {console.log(data)})
}
но у меня эта ошибка TypeError: Expected a function
. Сервис работает, но дебаунда нет. Он пишет посимвольно, когда я набираю текст, а это неверно.
this.handleSearch(e.target.value)
не выполняет функцию. Должен ли он? Или вам следует преобразовать это в ссылку на функцию? - person VLAZ   schedule 13.11.2020React.useCallback
внутри обратного вызова - person ypahalajani   schedule 13.11.2020debounce
принимает в качестве параметра ссылку на функцию. Однако вы предоставляетеthis.handleSearch(e.target.value)
- результат вызова метода. Результатом вызова этого конкретного метода будетundefined
, поскольку у вас нет явногоreturn
оператора. Итак, вам нужно либо изменитьhandleSearch
, чтобы вернуть функцию, либо вы измените этот вызов функции на обратный вызов. - person VLAZ   schedule 13.11.2020useCallback
, потому что вы не можете использовать никакие ловушки в компонентах класса. - person HMR   schedule 13.11.2020