react-hooks在useEffect中写防抖事件(随笔)

useEffect 会在每轮渲染结束后执行,在state发生改变时,也会重新render。因而,这里的state中状态变化时debounce 函数就会重新生成一次,其内部逻辑就会执行一次。所以其就没有起到作用
用 ref 保存一下防抖函数,后面再触发useEffect时,就不会生成新的防抖函数了
使用: getData.current(name, age)
卸载 usePrivateDebounce.current.cancel()

  import  _ from 'lodash';
  const usePrivateDebounce = (func: any,  wait: number | undifind, options?:any) => {
    const privateRef = useRef<any>(null);
    if (!privateRef.current) {
      privateRef.current = _.debounce(fun, wait, options);
    }
    return privateRef;
  };
  export default usePrivateDebounce;

-----
const getData = usePrivateDebounce((pName: string, pAge: number) => { console.log('11', pName, pAge) }, 2000);

useEffect(() => {
	getData.current(name, age)
}, [name, age])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值