[Next.js] Styles JSX

2022. 6. 30. 16:20·Next.js/이론
반응형

Next.js에서 .module.css 패턴을 통해서 style을 주는 방식 외에 다른 방법으로도 style을 줄 수 있다. 

 

Styles JSX

React에서나 다른 언어도 개발을 할 때 한번도 들어보지 못한 방식일 것이다. 

Styles JSX는 Next.js에서만 제공하는 고유한 방법이기 때문이다. 

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

const NavBar = () => {
  const router = useRouter();

  return (
    <nav>
      <Link href="/">
        <a>Home</a>
      </Link>
      <Link href="/about">
        <a>About</a>
      </Link>

      <style jsx>
        {`
          a {
            text-decoration: none;
          }
        `}
      </style>
    </nav>
  );
};

export default NavBar;

style 태그에 jsx 속성을 준 다음 {` `} 에 css를 넣어주면 된다. 

이렇게 넣어주면 .module.css 패턴을 사용할 때 보다 더 복잡한 방식의 클래스명이 할당된다. 

이를 통해 당연히 충돌도 방지되며, 굳이 클래스명을 지정해줄 필요가 없다는 것이 장점이다.

 

또한 부모 컴포넌트나 다른 컴포넌트에서 지정한 style이 있더라도 현재 컴포넌트에 존재하는 style jsx 태그만 적용이

된다.

 

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

const NavBar = () => {
  const router = useRouter();

  return (
    <nav>
      <Link href="/">
        <a className={router.pathname === "/" ? "active" : ""}>Home</a>
      </Link>
      <Link href="/about">
        <a className={router.pathname === "/about" ? "active" : ""}>About</a>
      </Link>

      <style jsx>
        {`
          a {
            text-decoration: none;
          }

          .active {
            color: red;
          }
        `}
      </style>
    </nav>
  );
};

export default NavBar;

특정 태그에만 속성을 주고 싶고, 조건이 있는 경우에도 "active" 처럼 할당해줄 수 있다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Next.js > 이론' 카테고리의 다른 글

[Next.js] Pattern & Head  (1) 2022.07.02
[Next.js] Custom App  (1) 2022.07.01
[Next.js] CSS 모듈  (1) 2022.06.29
[Next.js] Routing  (0) 2022.06.28
[Next.js] Next.js 세팅 및 구성 설명  (1) 2022.06.27
'Next.js/이론' 카테고리의 다른 글
  • [Next.js] Pattern & Head
  • [Next.js] Custom App
  • [Next.js] CSS 모듈
  • [Next.js] Routing
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    프로그래머스
    CCNA
    next.js
    자바스크립트
    네이버 부스트캠프
    리액트
    바질
    ChatGPT
    타일러영어
    Babel
    영어회화
    typescript
    타입스크립트
    식물
    redux
    CSS
    알고리즘
    덤프
    리얼클래스
    영어독학
    ReactNative
    Node.js
    webpack
    javascript
    리얼학습일기
    네트워크
    Docker
    react
    다이소
    바질 키우기
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[Next.js] Styles JSX
상단으로

티스토리툴바