这个问题很简单,但我可能忽略了一些小细节。窗口屏幕大小由
下面是
PostLayout
组件监听。当窗口宽度小于768px时,我期望isDesktopSize
为false。我尝试了一切方法,比如在setIsDesktopSize
中使用箭头函数、使用true或false文本作为状态值、使用回调函数等等……但这些方法都不起作用。下面是
PostLayout
的共享代码:import React, {useState,useEffect, useCallback} from 'react'
import LeftSideNavbar from './LeftSideNavbar'
import TopNavbar from './TopNavbar'
export default function PostLayout({children}) {
const [isDesktopSize, setIsDesktopSize] = useState(true)
let autoResize = () => {
console.log("Desktop: " + isDesktopSize);
console.log(window.innerWidth);
if(window.innerWidth < 768 ){
setIsDesktopSize(false)
}else{
setIsDesktopSize(true)
}
}
useEffect(() => {
window.addEventListener('resize', autoResize)
autoResize();
}, [])
return (
<>
<TopNavbar isDesktopSize={isDesktopSize}/>
<main>
<LeftSideNavbar/>
{children}
</main>
</>
)
}
以下是控制台日志:
Desktop: true
627
window
在浏览器中始终可用。 - Marc Baumbachwindow
是否被定义。如果没有,它基本上不运行并假定它是桌面尺寸,尽管可能没有明确正确的解决方案。 - Marc Baumbach