import { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
在上面的示例中,每当setCount(count + 1)
调用时都会发生重新渲染。我很好奇学习流程。
我尝试查看源代码。我在github.com/facebook/react上找不到任何参考useState
或其他钩子。
我react@next
通过安装npm i react@next
并在以下位置找到以下内容node_modules/react/cjs/react.development.js
function useState(initialState) {
var dispatcher = resolveDispatcher();
return dispatcher.useState(initialState);
}
在追溯时dispatcher.useState()
,我只能找到以下内容......
function resolveDispatcher() {
var dispatcher = ReactCurrentOwner.currentDispatcher;
!(dispatcher !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component.') : void 0;
return dispatcher;
}
var ReactCurrentOwner = {
/**
* @internal
* @type {ReactComponent}
*/
current: null,
currentDispatcher: null
};
我想知道在哪里可以找到dispatcher.useState()
实现并了解它在调用时如何触发重新渲染。setState
setCount
任何指针都会有所帮助。
谢谢!