如何解决如何在听 Next.js 中的路由器更改时更改状态?
我想要完成的是在更改路由器时与 github 上的这个 React 应用程序完全相同的打开和关闭菜单动画,但是使用 Next.js(几乎是相同的代码)
这是我的应用程序 repo on github,这里是 app live。
我正在尝试关注 Next.js documentation,但 menuOpened
的状态似乎没有更新。
import Link from 'next/link'
import React,{ useEffect,useState } from 'react'
import { withRouter,useRouter } from 'next/router'
import { UpArrowCircle } from '@/components/SvgFiles'
import { openMenu,closeMenu } from '@/components/MenuAnimations'
const Header = ({ dimensions }) => {
const [menuState,setMenuState] = useState({ menuOpened: false })
const router = useRouter()
useEffect(() => {
const handleRouteChange = (url) => {
// console.log(`App is changing to ${url}`)
setMenuState({ menuOpened: false })
}
if (menuState.menuOpened === true) {
openMenu(dimensions.width)
} else if (menuState.menuOpened === false) {
closeMenu()
}
router.events.on('routeChangeStart',handleRouteChange)
return () => {
router.events.off('routeChangeStart',handleRouteChange)
}
})
return (
<header className="header">
<div className="container">
<div className="row v-center space-between">
<div className="logo">
<Link href="/">
<a>AGENCY</a>
</Link>
</div>
<div className="nav-toggle">
<div
onClick={() => setMenuState({ menuOpened: true })}
className="hamburger-menu"
>
<span></span>
<span></span>
</div>
<div
className="hamburger-menu-close"
onClick={() => setMenuState({ menuOpened: false })}
>
<UpArrowCircle />
</div>
</div>
</div>
</div>
</header>
)
}
export default withRouter(Header)
欢迎任何帮助! 干杯!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。