CSS를 사용할 때 클래스 이름을 고유한 값으로 자동으로 만들어서 컴포넌트 스타일 클래스 이름이 중첩되는 현상을 방지해 준다. 일반 CSS파일과 동일한 방식으로 작성하지만 파일생성 시 이름은 ㅇㅇㅇ.module.css 이런식으로 짓는다.
<script>
.active {
color: rgb(120, 255, 120);
}
.link {
text-decoration: none;
}
</script>
<script>
import Link from "next/link";
import styles from "./NavBar.module.css";
import { useRouter } from "next/router";
export default function NavBar() {
const router = useRouter();
return (
// next에서 Link태그 자식으로 a태그 사용 X
<nav>
<Link href="/" className={`${styles.link} ${router.pathname === "/" ? styles.active : ""}`}>
Home
</Link>
<Link href="/about" className={[styles.link, router.pathname === "/about" ? styles.active : ""].join(" ")}>
about
</Link>
</nav>
);
}
</script>
1) 백틱 이용
<Link href="/" className={`${styles.link} ${router.pathname === "/" ? styles.active : ""}`}>
Home
</Link>
2) 배열형식으로 join(' ')
<Link href="/about" className={[styles.link, router.pathname === "/about" ? styles.active : ""].join(" ")}>
about
</Link>
정보가 많아서 도움이 많이 됐습니다.