老师可以再帮我梳理一下useEffect 的 return callback什么时候被运行吗?我console log 了一些信息,暂时的理解是:
假设 delay = 5
-
- useEffect#1 执行: setTimeout被call -> ( ) => { setDeboucedValue(value) } 这个函数会在五秒后被执行。
-
- 这个时候value被改变, useEffect#2 执行,这个时候useEffect#1的callback运行,清理了useEffect#1里的timer,然后在useEffect#2里 setTimeout被call -> ( ) => { setDeboucedValue(value) } 这个函数会在五秒后被执行,以此类推。
-
- 直到最后一个useEffect,没有新的useEffect出现来清掉timeout, setDebouncedValue才被运行,debouncedValue才最终被更新。
那是不是说,只有下一个useEffect的出现才会让上一次useEffect的callback运行呢? 我这样的理解对吗?