useMemo和useCallback源码浅析 #113
zhangyu1818
announced in
zh-cn
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
简述
useMemo和useCallback相对来说源码比较简单,在函数组件执行到对应的Hook时,同样会将包含该Hook信息的对象链接到Fiber节点的memoizedState属性上的Hooks链表。useMemo的Hook对象的memoizedState属性上存的值为计算后的值和依赖数组 ——hook.memoizedState = [nextValue, nextDeps]。useCallback的Hook对象的memoizedState属性上存的值为回调函数和依赖数组 ——hook.memoizedState = [callback, nextDeps]。以下源码浅析React版本为17.0.1。
useMemo
在React中,
Hooks在Mount时和Update时使用的是两个不同函数(useContext除外)。Mount时
Update时
useCallback
之前有看别人讲
useCallback是useMemo的语法糖,现在一看,虽然两个方法完全不同,但也基本完全相同了。Mount时
Update时
这俩方法的源码也太短了,这样就水了一文。
其实一直有一个疑问,如果真的要想让一个函数的地址不发生变化,用
useRef来存函数不是更妙吗?Beta Was this translation helpful? Give feedback.
All reactions