认识
2023年06月10日
一、认识
React.js Hook
让函数组件也能做类组件的事,有自己的状态,可以处理一些副作用,能获取 ref
,也能做数据缓存。Hooks
在 React.js
中有三种处理策略:
-
ContextOnlyDispatcher
: 第一种形态是防止开发者在函数组件外部调用hooks
,所以第一种就是报错形态,只要开发者调用了这个形态下的hooks
,就会抛出异常。 -
HooksDispatcherOnMount
: 第二种形态是函数组件初始化mount
,因为之前讲过hooks
是函数组件和对应fiber
桥梁,这个时候的hooks
作用就是建立这个桥梁,初次建立其hooks
与fiber
之间的关系。 -
HooksDispatcherOnUpdate
: 第三种形态是函数组件的更新,既然与fiber
之间的桥已经建好了,那么组件再更新,就需要hooks
去获取或者更新维护状态。
二、细节
2.1 hook.memoizesState
hook.memoizesState
存储 useEffect
的 effect
副作用链表
hook.memoizedState = pushEffect(
Passive | HookHasEffect,
create,
undefined,
nextDeps
);