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


不知道这样表达清楚了没,如果不清楚的话再给我留言吧

1
1
qq_小江南_04298178
嗯嗯,我下来又好好看了下,感觉明白了,后面继续学多用用再有疑惑了再问老师
2021-01-26
共1条回复

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

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

2691 学习 · 1236 问题

查看课程