请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于useCallback

官方文档说在useMemo, useCallback
“内部执行与渲染无关的操作,诸如副作用这类的操作属于 useEffect 的适用范畴,而不是 useMemo。”

但是视频里面,useCallback发送了异步请求这是副作用啊,这不是不应该在useCallback里吗?

正在回答 回答被采纳积分+3

1回答

慕粉1472429674 2022-05-12 10:34:12

我的理解是 useMemo 缓存的是一个值,但是计算过程是在渲染时计算的。如果之后的依赖项不改变,那这个值就不会改变,也就是渲染出来的结果始终不变。而 异步请求 的结果不是函数本身通过计算可以获得的,所以不应该使用 useMemo 来优化 异步请求。
但是 useCallback 缓存的是一个方法,每次执行时还会执行这个方法,返回值取决于方法执行后的结果。只是依赖项没有改变时,不会再创建一次。所以他可以用来优化 异步请求。当然也可以用来执行 副作用。
useEffect 和 useCallback 还不太一样,useEffect 没有返回值,在 依赖项 改变时执行一个函数。而 useCallback 返回一个函数,并在 依赖项改变时更新 返回的函数。

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕丝2377090 #1
    我不知道 我理解的对不对,事实上我感觉useCallback比较适合用来缓存一个函数组件?这样就相当于把这个函数组件类似在Vue里面用<keep-alive>缓存一样
    回复 有任何疑惑可以回复我~ 2022-05-12 16:30:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信