Debounce中的一个细节问题

来源:3-4 学习自定义Hook - 用useDebounce减少工程搜索请求频率

坡村小码哥

2021-03-02

问题

Debounce的原理我已经理解了,谢谢老师!但是我在看代码的时候我发现两个细节:

export const useMount = (callback) => {
  useEffect(() => {
    callback(); // 1
  }, []);
};

export const useDebounce = (callback, delay) => {
  let timeout;

  if (timeout) {
    clearTimeout(timeout);
  }
  timeout = setTimeout(function() = {
    callback(); // 2
  }, delay);
};
  1. 注释的1和2处都是用函数wrap了一下callback,为什么需要这样做呢,直接把callback传给setTimeout和useEffect有什么问题?
  2. 为什么第一处用了箭头函数第二处用了匿名函数呢,是因为this绑定嘛,但是我没有相处很好的理由,还是说无所谓?

请老师解答,谢谢!

写回答

1回答

Nolan

2021-03-02

hi, 你看的很仔细

  1. 只要callback的类型是() => void,也就是只要返回void,直接传没有问题

  2. 这个无所谓,全写箭头函数就可以

0
2
Nolan
回复
坡村小码哥
哈哈谢谢!
2021-03-03
共2条回复

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程