![](/img/trans.png)
[英]How to call getServerSideprops with useEffect in Next.js
[英]How to track value of undefined variable in dependency list in useEffect in React and Next.js
此解決方案適用於您的用例。
所以我們有 2 個useEffect
鈎子。
第一個useEffect
將事件偵聽器附加到window
object。 因為window
用於useEffect
掛鈎,所以它不會在服務器端執行。
第二個useEffect
掛鈎將偵聽 state 對innerWidth
的更改,每當發生resize
事件時都會更新。
const [innerWidth, setInnerWidth] = useState<number | undefined>();
useEffect(() => {
// Handler to call on window resize
function handleResize() {
setInnerWidth(window.innerWidth);
}
// Add event listener
window.addEventListener('resize', handleResize);
// Call handler right away so state gets updated with initial window size
handleResize();
return () => window.removeEventListener('resize', handleResize);
}, []);
useEffect(() => {
// Handle your changes
console.log(innerWidth);
}, [innerWidth]);
受此useWindowResize 實現的啟發
您可以嘗試使用 process.browser 僅在客戶端渲染期間執行您的命令。
if (typeof window !== "undefined") { //client side code }
/*OR TRY THIS */
/*Remove dependency array*/
useEffect(() => {
if (window && window.innerWidth) {
// Do something
}
}, [])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.