Comments 5
и тянем useTimeout...
в последних версиях реакта, уже добавили этот хук https://react.dev/reference/react/useDeferredValue
А вот это все проходило хоть какую-то проверку временем? Подвергалось пристальному рассмотрению перед публикацией?
Я это и про примеры и про решение.
Если идти сверху вниз.
Зачем вам в useDebounce нечто, что вы называете dependencies?
Ну, потому что useTimeount от этого не зависит, а зависит только от callback. А значит если, callback меняется, то все хуки срабатывают. И что это тогда за dependencies, если он не зависим от callback?
А самое забавное, что потом идет пример, который наглядно демонстрирует всю эту ситуацию.
Вы в свой хук отправляете литерал стрелочной функции. И поэтому вообще не имеет значения, что у вас там за массив [count] такой, потому, что литерал в зависимостях будут заставлять выполянться все хуки, куда он прокинут.
И второе, вы проверяли это работает? Потому что на вид, вы неверно сэмулировали useEffect. При выполнении эффекта сначала должна выполняться функции отмены предыдущего эффета, а потом уже функция нового эффекта. А у вас наоборот. При этом clear у вас общая для любого reset. А это значит, что вы устанавливаете новый ресет, и тут же clear его отменяет. Или я где-то упустил мысль?
дебаунсить нужно разные вещи. просто useDebounce
не покрывает все случаи. у меня в проекте заведено 3 хука:
useDebouncedEffect
useDebouncedValue
useDebouncedFunction
React Custom Hook: useDebounce