关于useCallback
来源:10-1 useCallback应用,优化异步请求

weixin_慕丝2377090
2022-05-09
官方文档说在useMemo, useCallback
“内部执行与渲染无关的操作,诸如副作用这类的操作属于 useEffect 的适用范畴,而不是 useMemo。”
但是视频里面,useCallback发送了异步请求这是副作用啊,这不是不应该在useCallback里吗?
写回答
1回答
-
慕粉1472429674
2022-05-12
我的理解是 useMemo 缓存的是一个值,但是计算过程是在渲染时计算的。如果之后的依赖项不改变,那这个值就不会改变,也就是渲染出来的结果始终不变。而 异步请求 的结果不是函数本身通过计算可以获得的,所以不应该使用 useMemo 来优化 异步请求。
但是 useCallback 缓存的是一个方法,每次执行时还会执行这个方法,返回值取决于方法执行后的结果。只是依赖项没有改变时,不会再创建一次。所以他可以用来优化 异步请求。当然也可以用来执行 副作用。
useEffect 和 useCallback 还不太一样,useEffect 没有返回值,在 依赖项 改变时执行一个函数。而 useCallback 返回一个函数,并在 依赖项改变时更新 返回的函数。012022-05-12
相似问题