[英]Why the useEffect hook does not work with state variable in context?
[英]addEventListener does not work within a useEffect hook
以下是一個組件,其功能部分是在頁面變得聚焦和模糊時更改窗口的標題。 這是行不通的。
const ATitleChangingComponent = () => {
const focusFunction = (event: FocusEvent) => {
document.title = "focused";
};
const blurFunction = (event: FocusEvent) => {
document.title = "blurred";
};
useEffect(() => {
window.addEventListener("focus", focusFunction);
return window.removeEventListener("focus", focusFunction);
}, []);
useEffect(() => {
window.addEventListener("blur", blurFunction);
return window.removeEventListener("blur", blurFunction);
}, []);
return <p>some unimportant jsx</p>
};
然而,
const focusFunction = (event: FocusEvent) => {
document.title = "focused";
};
window.addEventListener("focus", focusFunction);
效果很好。
附帶的問題: const blurFunction
是否分別構造了const focusFunction
和const blurFunction
? 我認為如果這樣,應該將它們從組件中取出以避免不必要的開銷?
需要返回一個函數,否則監聽器會立即被刪除。
組件卸載時調用該函數
useEffect(() => {
window.addEventListener("blur", blurFunction);
return () => window.removeEventListener("blur", blurFunction);
}, []);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.