React Hook Flow
実行コード
<!DOCTYPE html>
<html lang="en">
<body>
<script
crossorigin
src="https://unpkg.com/react@17/umd/react.development.js"
></script>
<script
crossorigin
src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"
></script>
<script
crossorigin
src="https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<div id="root"></div>
<script type="text/babel">
const rootElement = document.getElementById("root");
const Child = () => {
console.log(" Child render start");
const [text, setText] = React.useState(() => {
console.log(" Child useState : text");
return "";
});
const handleChange = (e) => {
setText(e.target.value);
};
React.useEffect(() => {
console.log(" Child useEffect : empty deps");
return () => {
console.log(" Child useEffect : [Cleanup], empty deps");
};
}, []);
React.useEffect(() => {
console.log(" Child useEffect : no deps");
return () => {
console.log(" Child useEffect : [Cleanup], no deps");
};
});
React.useEffect(() => {
console.log(" Child useEffect : show deps");
return () => {
console.log(" Child useEffect : [Cleanup], text deps");
};
}, [text]);
const element = (
<>
<input onChange={handleChange} />
<p>{text}</p>
</>
);
console.log(" Child render end");
return element;
};
const App = () => {
console.log("App render start");
const [show, setShow] = React.useState(() => {
console.log("App useState : show");
return false;
});
const handleClick = () => {
setShow((prev) => !prev);
};
React.useEffect(() => {
console.log("App useEffect : no deps");
return () => {
console.log("App useEffect : [Cleanup], no deps");
};
});
React.useEffect(() => {
console.log("App useEffect : empty deps");
return () => {
console.log("App useEffect : [Cleanup], empty deps");
};
}, []);
React.useEffect(() => {
console.log("App useEffect : show deps");
return () => {
console.log("App useEffect : [Cleanup], show deps");
};
}, [show]);
console.log("App render end");
return (
<>
<button onClick={handleClick}>search</button>
{show && <Child />}
</>
);
};
ReactDOM.render(<App />, rootElement);
</script>
</body>
</html>
初上陸
App Rendererの起動
App useState
アプリケーションレンダリングの終了
App useEffectすべてのアクション
検索ボタンをクリック
App Rendererの起動
App Rendererを終了
Child renderの起動
Child useState
終了child render
App useEffect Cleanup
Child useEffect
App useEffect
もう一度検索ボタンをクリック
Reference
この問題について(React Hook Flow), 我々は、より多くの情報をここで見つけました https://velog.io/@shelly/React-Hook-Flowテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol