【发布时间】:2021-06-17 12:12:21
【问题描述】:
这个问题很简单但是我可能忽略了很少一点。 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
【问题讨论】: