[React] Clean up Effect
1584 ワード
Clean up Effect
1.Cleanup関数
ページを離れると、イベントリスナーは不要になる可能性があります.この場合はEffectを整理します毎回Effectのクリーンアップを開始できるように、論理をUSEffectに整理するアクションをUSEffectで定義できます.
Cleanup関数は、ユーザEffect()のreturn関数です.
🙋♀️ 元の関数にはreturnがあるのではないでしょうか。return関数は何ですか?
最初の例は次のとおりです.useEffect(() => {
function handleScroll() {
console.log(window.scrollY)
}
document.addEventListener("scroll", handleScroll)
return () => {
document.removeEventLisnter("scroll", handleScroll)
}
}, [])
userEffect関数にreturn関数があることがわかります.userEffect関数にreturn関数を追加することでcleanup関数を使用できます.return () => {}; //cleanup 함수는 이렇게 쓸 수 있습니다.
ユーザーが現在のページから別のページに移動したときにuserEffectを実行しないことを確認します.
🙋̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴\820
第2の例では、useEffect(() => {
console.log("effect");
return () => {
console.log("cleanup effect");
};
});
1.最初にページをレンダリングしたとき(マウント時)
consoleはuserefect関数のconsoleのみを撮影します.
2.state値を変更する場合(たとえば、ボタンをクリック)
consoleはまずcleanup関数のconsoleを撮影し、useEffect関数のconsoleを撮影します.
userEffectを実行する前にcleanup関数を実行し、userEffect関数を実行します.
stateを変更すると、
cleanup関数->userEffect関数を実行このループ.
3.別のページに移動してアンインストールする場合
cleanup関数は1回のみ実行され、既存の斑点関数は実行されません.
**注意事項
構成部品の作成と消去時にのみクリーンアップEffectが実行されるわけではありません.次のEffectが発生する前に必ず整理する前にEffectの影響を覚えておいてください🤩
Reference
この問題について([React] Clean up Effect), 我々は、より多くの情報をここで見つけました
https://velog.io/@memoyoon/React-Clean-up-Effect
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
useEffect(() => {
function handleScroll() {
console.log(window.scrollY)
}
document.addEventListener("scroll", handleScroll)
return () => {
document.removeEventLisnter("scroll", handleScroll)
}
}, [])
return () => {}; //cleanup 함수는 이렇게 쓸 수 있습니다.
useEffect(() => {
console.log("effect");
return () => {
console.log("cleanup effect");
};
});
Reference
この問題について([React] Clean up Effect), 我々は、より多くの情報をここで見つけました https://velog.io/@memoyoon/React-Clean-up-Effectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol