gpt4 book ai didi

reactjs - 在更改链接时在 nextjs 中激活 a 标签

转载 作者:行者123 更新时间:2023-12-01 23:16:44 25 4
gpt4 key购买 nike

我有 2 个页面主页和关于我们页面,它们的链接分别以/home 和/about 结尾。着陆页是我的主页,因此我已将其 css 属性设置为事件,以便突出显示。但是当我转到我的关于页面时,主页 css 保持事件状态。 nextJs 路由变化时,如何动态更改 css?

我当前的代码:

export default function Nav({ children }) {
return (
<div>
<Head>
<title>Legacy</title>
<meta name="description" content="Generated by create next app" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>
</Head>
<nav>
<div className="logo">Legacy</div>
<input type="checkbox" id="click" />
<label for="click" className="menu-btn">
<i className="fas fa-bars"></i>
</label>
<ul>
<li>
<Link href="http://localhost:3000/home">
<a className="active" >
Home
</a>
</Link>
</li>
<li>
<Link href="http://localhost:3000/about">
<a >About Us</a>
</Link>
</li>
</ul>
</nav>
</div>
);
}

最佳答案

看起来您需要使用 router .路由器是一个钩子(Hook),因此它会在每次页面更改时更新。

这是一个简短的例子:

import { useRouter } from 'next/router'

export default function Nav() {
const router = useRouter()
const currentRoute = router.pathname

return (
<Link href='/about'>
<a className={currentRoute === '/about' ? 'active' : ''}>
About us
</a>
</Link>
)
}

我还建议您查看文档,因为您可以使用路由器做更多的事情:

https://nextjs.org/docs/api-reference/next/router


附言创建相对链接时,最好不要包含域。因此,不要使用 http://localhost:3000/about,只需使用 /about。它始终有效,如果您决定更改域(例如,使用 Vercel 部署站点),则无需更新代码。

关于reactjs - 在更改链接时在 nextjs 中激活 a 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68728268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com