关于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 返回一个函数,并在 依赖项改变时更新 返回的函数。

0
1
weixin_慕丝2377090
我不知道 我理解的对不对,事实上我感觉useCallback比较适合用来缓存一个函数组件?这样就相当于把这个函数组件类似在Vue里面用缓存一样
2022-05-12
共1条回复

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

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

2691 学习 · 1236 问题

查看课程