gpt4 book ai didi

javascript - 如何在 Next.js 的事件页面上设置链接组件的样式

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

我有一个关于在事件页面上设置 anchor 组件样式的问题。
这是我的代码:

import Link from 'next/link';
import styled from 'styled-components';

const NavStyle = styled.nav`
display: flex;
justify-content: space-between;
.nav-link a {
text-decoration: none;
color: white;
padding: 10px;
background-color: #FFCF00;
}
`;

export default function Nav() {
return (
<NavStyle>
<div className="nav-link">
<Link href="/" passHref>
<a>HOME</a>
</Link>
<Link href="/pricing">
<a>PRICING</a>
</Link>
<Link href="/terms">
<a>TERMS</a>
</Link>
<Link href="/login">
<a>LOGIN</a>
</Link>
</div>
<Link href="/">
<a>LOGO</a>
</Link>
</NavStyle>
)
}
我想要的是,当我单击链接并移动到另一个页面时,事件链接(与 URL 匹配)将具有绿色背景。我试过这个,但没有任何改变:
const NavStyle = styled.nav`
display: flex;
justify-content: space-between;
.nav-link a {
text-decoration: none;
color: white;
padding: 10px;
background-color: #FFCF00;
&[aria-current] {
background-color: green;
}
}
`;

最佳答案

Next.js 不会添加 aria-current到您的事件链接;但是,您可以创建自定义 Link检查当前 pathname 是否存在的组件与 href 相同支柱。

import React from "react";
import Link from "next/link";
import { useRouter } from "next/router";

const NavLink = ({ children, href }) => {
const child = React.Children.only(children);
const router = useRouter();

return (
<Link href={href}>
{React.cloneElement(child, {
"aria-current": router.pathname === href ? "page" : null
})}
</Link>
);
};

export default NavLink;
然后,您可以使用此组件代替默认的 Link随时添加 aria-current到事件链接:
const NavStyle = styled.nav`
display: flex;
justify-content: space-between;

a {
background-color: #353637;
color: #fff;
padding: 1rem;
text-decoration: none;

&[aria-current] {
background-color: #faf9f4;
color: #353637;
}
}
`;

export default function Nav() {
return (
<NavStyle>
<div className="nav-link">
<NavLink href="/">
<a>HOME</a>
</NavLink>
<NavLink href="/pricing">
<a>PRICING</a>
</NavLink>
<NavLink href="/terms">
<a>TERMS</a>
</NavLink>
<NavLink href="/login">
<a>LOGIN</a>
</NavLink>
</div>
<Link href="/">
<a>LOGO</a>
</Link>
</NavStyle>
);
}

关于javascript - 如何在 Next.js 的事件页面上设置链接组件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66061638/

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