【发布时间】:2021-03-14 20:55:22
【问题描述】:
我创建了一个响应式侧边栏,逻辑实现如下,当屏幕低于 765 像素时侧边栏自动隐藏,但问题是当我刷新低于 765 像素的页面时,侧边栏显示它看起来像这样
我的代码是这样的
function SideBar(props) {
const {someValue} = useContext(SideBarContext);
const {SideBarValue, SideBarWallpaperValue} = React.useContext(CounterContext);
const [SideBarThemeValue] = SideBarValue;
const [SideBarBackgroundValue] = SideBarWallpaperValue;
const [sideBarOpen, setSideBarOpen] = useState(true);
const [SideBarButtonContainer, setSideBarButtonContainer] = useState(false);
useEffect(() => {
window.addEventListener("resize", resize);
})
const resize = () => {
if(window.innerWidth < 765) {
setSideBarOpen(false)
setSideBarButtonContainer(true)
} else {
setSideBarOpen(true)
setSideBarButtonContainer(false)
}
}
const showSideBar = () => {
setSideBarOpen(!sideBarOpen)
}
return (
<>
{
SideBarButtonContainer ? <div className={"showSideBarButtonContainer"}>
<img className={"showSideBarButton"} onClick={() => showSideBar()} src={SideBarMenuIcon} alt={"Open"} />
</div> : null
}
<Menu isOpen={sideBarOpen}>
</Menu>
</>
);
}
我假设当我刷新页面时,sideBarOpen 值变为 true,尽管我在 resize 方法中进行了检查,并注意到当我开始缩小屏幕时,侧边栏消失了,看起来像这样
【问题讨论】:
标签: javascript reactjs react-hooks media-queries