styles jsx

2023. 7. 7. 21:13·React

react컴포넌트에 스타일을 적용하는 방법으로 styles jsx를 사용하는 방법도 있다.

styles jsx는 nextJS에만 있는 고유의 방법이다. 

 

styles jsx를 사용하면 이점

별도의 파일이 필요없다는 점

 

styles jsx를 적용했을때도 module.css를 적용했을때와 동일하게 

클래스명이 난수로 표현된다. 중복우려 없음! 

 

컴포넌트안에 html style태그를 넣어주고 jsx props를 입력해준다. 

그리고 그 안에 스타일을 작성한다. 

<style jsx>{`
    nav {
      background-color: tomato;
    }
    a {
      text-decoration: none;
    }
    .active {
      color: yellow;
    }
`}</style>

 

이슈!  a태그에 스타일을 적용하는데 적용이 안될때 해결법 

1. <style jsx global></style> 글로벌로 선언한다

2. legacyBehavior 사용하여 이전버전 link를 커버한다.

<Link href="/" legacyBehavior><a  className="active">Home</a></Link>

3. link > span태그를 넣어서 클래스를 span태그에 적용한다. 

<Link href="/"><span className={router.pathname === "/" ? "active" : ""}>Home</span></Link>

 

컴포넌트 안에서 사용한 styles jsx의 스코프는 컴포넌트로 한정된다. 

부모 컴포넌트에서 적용이 안된다. 

 

styles jsx 전역으로 적용하기
global props를 넣어준다. 

<style jsx global>
    {`
        .active {
          color: blue;
        }
    `}
</style>

페이지 컴포넌트에서 공통 선언하기 위해서는 공통페이지 청사진 컴포넌트가 필요하다. 

페이지에서 동일하게 중복선언하기 번거롭기 때문에 

 

pages 폴더에 _app.js를 만들어준다. 

페이지 컴포넌트가 렌더링 되기 전에 _app.js를 실행시키고 렌더링한다. 

_app.js는 페이지 컴포넌트의 청사진이라고 볼 수 있다. 

import '../styles/globals.css'

function MyApp({ Component, pageProps }) {
  return <div>
      <Component {...pageProps} />
      <style jsx global>
      {`
        .active {
          color: blue;
        }
      `}
      </style>
    </div>
}

export default MyApp

 

_app.js를 사용하면 좋은점 

nextJS에서는 css파일을 import 할 수 없다. 

무조건 module를 import할 수 있는데 

_app.js에서는 css도 import할 수 있어서 global.css를 가져올 수있다.

'React' 카테고리의 다른 글

react-hook-form validate with zod  (0) 2023.08.17
리액트 오류: React DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node  (0) 2023.08.05
react module.css  (0) 2023.07.07
gh-pages을 이용하여 Github Pages에 배포하기  (0) 2023.03.15
React Hooks  (0) 2023.03.08
'React' 카테고리의 다른 글
  • react-hook-form validate with zod
  • 리액트 오류: React DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node
  • react module.css
  • gh-pages을 이용하여 Github Pages에 배포하기
ssund
ssund
  • ssund
    ssund의 기술블로그
    ssund
  • 전체
    오늘
    어제
    • TECH (82)
      • Next.js (8)
      • React (25)
      • Vite (1)
      • javascript (17)
      • CSS (6)
      • CS (10)
      • AWS (0)
      • Jest (1)
      • CI|CD (0)
      • 알고리즘 (8)
      • Tools (1)
      • Tips (5)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      redux
      react state management
      call signatures
      git배포
      TypeScript
      app-router
      웹브라우저구성
      React
      reat-head
      nextjs
      서버컴포넌트
      배열요소순서
      JavaScript
      커머스프로젝트
      함수와 메서드차이
      theme-provider
      타입스크립트
      styled-components
      global-style
      Array.sort()
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    ssund
    styles jsx
    상단으로

    티스토리툴바