源码中含有flow类型,直接使用会报错
EXPERIMENTAL is not defined
由于使用的是最新源码,含有一些实验性功能,会导致上述错误
# React中的dispatcher
在 React 的函数式组件中,hooks(如 useState 和 useEffect)需要依赖一个运行时上下文,来跟踪当前正在渲染的组件,以及该组件的状态、上下文等信息。
为了实现这一点,React 使用了一个 dispatcher,它是一个内部的抽象层,负责将 hooks 调用分发到当前组件的正确上下文中。
# resolveDispatcher 的作用
在代码中,resolveDispatcher 的职责是获取当前上下文中正在工作的 dispatcher。
function resolveDispatcher() {
const dispatcher = ReactCurrentDispatcher.current;
if (dispatcher === null) {
throw new Error(
'Invalid hook call. Hooks can only be called inside of the body of a function component.'
);
}
return dispatcher;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9