我有一个带有用于深色背景的白色链接的菜单(用于主页)和带有用于其他所有页面的深色链接的菜单。
无论出于何种生产原因,react/NextJS 都会在第一页加载时忽略它,即使当我控制台路径是“/”时也是如此。有什么建议可以解决这个问题吗?如果我打开并单击主页链接,控制台路径仍然是“/”,我可以获得正确的菜单。
export default function Navigation({menu, className}) {
const {asPath} = useRouter()
const router = useRouter()
const path = router?.asPath // URL from router.
console.log('path', path)
if (path === '/') {
return (
<>
{!!menu?.length && (
<nav className={cn(styles.navigation, className)}>
<ul className="home">
{menu.map((item, index) => {
const children =
item.children && item.children.length > 0 ? item.children : ''
return (
<li key={index}>
<Link href={item.path}>
<a
target={item.target ? item.target : '_self'}
className={cn(
'nav-item',
isLinkActive(asPath, item.path) && styles.active
)}
>
{item.label}
</a>
</Link>
{children && (
<ul>
{children.map((item, index) => {
return (
<li key={index}>
<Link href={item.path}>
<a
target={item.target ? item.target : '_self'}
className={cn(
'nav-item',
isLinkActive(asPath, item.path) &&
styles.active
)}
>
{item.label}
</a>
</Link>
</li>
)
})}
</ul>
)}
</li>
)
})}
</ul>
</nav>
)}
</>
)
}
return (
<>
{!!menu?.length && (
<nav className={cn(styles.navigationOther, className)}>
<ul>
{menu.map((item, index) => {
const children =
item.children && item.children.length > 0 ? item.children : ''
return (
<li key={index}>
<Link href={item.path}>
<a
target={item.target ? item.target : '_self'}
className={cn(
'nav-item',
isLinkActive(asPath, item.path) && styles.active
)}
>
{item.label}
</a>
</Link>
{children && (
<ul>
{children.map((item, index) => {
return (
<li key={index}>
<Link href={item.path}>
<a
target={item.target ? item.target : '_self'}
className={cn(
'nav-item',
isLinkActive(asPath, item.path) &&
styles.active
)}
>
{item.label}
</a>
</Link>
</li>
)
})}
</ul>
)}
</li>
)
})}
</ul>
</nav>
)}
</>
)
}
Navigation.propTypes = {
className: PropTypes.string,
menu: PropTypes.arrayOf(PropTypes.object)
}