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
-
简述
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