[英]Debounce in React component JS
我正在為輸入組件編寫一個簡單的去抖動 function
export const debounce = (func, wait) => {
let timeout
return function (...args) {
if (timeout) {
clearTimeout(timeout)
}
timeout = setTimeout(() => {
timeout = null
Reflect.apply(func, this, args)
}, wait)
}
}
它從外部文件導入,並用作 React 組件(Hooks)中input
onKeyUp 處理程序的包裝
const handleChange = debounce(() => console.log("test"), 1000)
問題:每次當input
中的文本發生變化時,我都會收到“測試”日志,而不僅僅是一個 - 正如預期的那樣。
我究竟做錯了什么?
我不確定您的代碼有什么問題,但這是一個可以使用掛鈎的版本
import { useEffect, useState } from "react";
const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(handler);
}, [value, delay]);
return debouncedValue;
};
export default useDebounce;
然后你用它作為
const debouncedValue = useDebounce(inputValue, delay);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.