useDebounce 中的 return 的 debounceValue 是怎么保证 return 的值是 setDebounceValue 之后的?
来源:3-4 学习自定义Hook - 用useDebounce减少工程搜索请求频率

qq_小江南_04298178
2021-01-24
useDebounce 中的 setDebounceValue 是在 setTimeout 中执行的,只有它执行完成后 debounceValue 值才是我们想要的,而 setTimeout 是异步的呀!useDebounce 的 return 怎么 return 到正确目标值的呢?
写回答
1回答
-
Nolan
2021-01-24
同学你好
可以这样理解,假设setTimeout设置的delay值是5秒第一次组件刷新:useDebounce会瞬间返回一次:undefined (传进来的初始值,假设是undefined吧)
...5秒以后...
setTimeout触发,setDebounceValue 改变了 debouncedValue,由于 debouncedValue 是用useState 定义的状态,所以这次改变会触发组件刷新。由于组件刷新了,useDebounce会再次执行一次,返回已经被setDebounceValue设置完成的debouncedValue
不知道这样表达清楚了没,如果不清楚的话再给我留言吧
112021-01-26
相似问题