方案一
防抖函数,短时间内多次触发同一事件,只执行最后一次,这个函数在React中使用不生效,原因就是函数组件每次渲染,函数都会被重建,导致平时用的 debounce 函数中的timer会重新创建,导致防抖失效。
function debounce (fn, wait) {
let timer = null
return function (...args) {
if (timer !== null) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn(args)
timer = null
}, wait)
}
}
export default () => {
const handleClick = debounce(() => console.log("click fast!"), 1000));
return (
<button onClick=