• 티스토리 홈
  • 프로필사진
    루루개발자
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
루루개발자
  • 프로필사진
    루루개발자
    • 분류 전체보기 (212)
      • react & next.js (12)
      • Node.js & Javascript & Type.. (24)
        • d3.js (10)
      • 차트 만들기 (1)
      • 티스토리 스킨 개발 (7)
      • 내가 만든 패키지 (3)
      • 내가 만든 CSS (1)
      • CSS (7)
      • 도커 & 쿠버네티스 (3)
      • 개인 프로젝트 (7)
      • 리뷰 & 추천 (2)
      • 알고리즘 (1)
      • IT 기타 (18)
      • 잡동사니 (1)
      • Spring Boot (5)
      • 취미로 그리는 그림들 (120)
      • 개인적인 생각들 (0)
  • 반응형
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 리액트에 style 적용하는 방법 2가지
        2022년 05월 08일
        • 루루개발자
        • 작성자
        • 2022.05.08.오후08:28
        반응형

        안녕하세요. 루루개발자 입니다.

        이번 시간에는 리액트에서 style 을 적용하는 방법 2가지에 대해 알아보겠습니다.

         

        CSS Module 

        [ 정리해보기 ]

        리액트에 css 를 적용하는 방법 중 하나가 CSS Module 방식이라고 합니다. "파일명.module.css" 으로 이름을 짓고, 해당 파일을 다음과 같이 컴포넌트 파일 상단에 import 해주는 방식입니다. 예제 코드는 아래와 같습니다.

         

        <my-component.module.css>

        ul.list {
          margin: 0;
          padding: 0;
        }
        
        ul.list > li.item {
          margin: 0;
          padding: 0;
          list-style-type: none;
          background-color: rgb(0, 255, 140);
        }
        
        ul.list2 {
          margin: 0;
          padding: 0;
          border: 1px solid #ccc;
        }
        ul.list2 > li.item {
          margin: 0;
          padding: 0;
          list-style-type: none;
          background-color: rgb(255, 0, 0);
        }

        <my-component.jsx>

         

         

        import styles from './my-component.module.css';
        
        export const MyComponent = () => {
            return (
            	<div>
                    <ul className={styles.list}>
                        <li className={styles.item}>
                            1
                        </li>
                    </ul>
                    <ul className={styles.list2}>
                        <li className={styles.item}>
                            2
                        </li>
                    </ul>
                </div>
            )
        }

        위 상태에서 styles 를 console.log 에 찍어보면 다음과 같이 표시됩니다.

        이렇게 css 파일에 작성했던 선택자들이 object 의 key 형태로 제공됩니다. 결과는 다음과 같습니다.

         

        [ 생각해보기 ]

        css 파일을 별도로 분리하여 style 과 view 를 분리할 수 있다는 점에서 이 방법은 마음에 드네요. 그리고 위의 예제에서 css 파일에서 정의한 item 클래스는 엄연히 2종류이나 styles 에는 item 하나밖에 표시되지 않습니다. 이 때문에 저는 부모 클래스가 다르더라도 자식 클래스명은 중복이 되면 안되는 제약이 존재하는줄 알았지만, 위의 예제대로 테스트를 진행해보니 정상적으로 css 가 적용되는 것을 확인 할 수 있었습니다. 클래스명을 element 에 적용할 때 객체의 키를 넣어주어야 한다는 점이 살짝 번거로울 수는 있어도 css 파일 자체를 따로 분리 할 수 있다는 점에서 선호하는 방식입니다.

         

         

        Styled JSX

        [ 정리해보기 ]

        컴포넌트내에서 style 태그로 스타일을 작성하는 방법이라고 합니다. 예제는 다음과 같습니다.

         

        <my-component.jsx>

        export const MyComponent = () => {
            return (
            	<div>
                    <ul className="list">
                        <li className="item">
                            1
                        </li>
                    </ul>
                    <ul className="list2">
                        <li className="item">
                            2
                        </li>
                    </ul>
                    <style jsx>{`
                        ul.list {
                            margin: 0;
                            padding: 0;
                        }
        
                        ul.list > li.item {
                            margin: 0;
                            padding: 0;
                            list-style-type: none;
                            background-color: rgb(0, 255, 140);
                        }
        
                        ul.list2 {
                            margin: 0;
                            padding: 0;
                            border: 1px solid #ccc;
                        }
                        ul.list2 > li.item {
                            margin: 0;
                            padding: 0;
                            list-style-type: none;
                            background-color: rgb(255, 0, 0);
                        }
                    `}</style>
                </div>
            )
        }

        위와 같이 View 와 Style 이 한 곳에 공존하는 구조가 됩니다. 결과는 CSS Module 방식 때의 예제와 같습니다.

         

        [ 생각해보기 ]

        css module 방식은 element 에 class 적용시 객체의 키를 넣어주어야 했지만, styled jsx 방식은 바로 클래스명을 넣어주면 되기 때문에 클래스를 적용하는 것은 더 편하다고 느꼈습니다. style 이 아주 적게 들어가는 컴포넌트라면 이 방식을 적용하는 것도 괜찮을 수 있다는 생각이 드네요.

         

         

        마치며

        사실 이 밖에도 리액트에 style 을 적용하는 방법은 다양합니다만, 여기서는 위 2가지 방법만 소개해드렸습니다.

         

        읽어주셔서 감사합니다. :)

         

         

         

         

        <참고>

        https://velog.io/@sorious77/React-CSS-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

         

        React에 CSS를 적용하는 여러 방법

        React는 다양한 라이브러리의 조합으로 생산성이 높아지는 자바스크립트 라이브러리이다. 따라서 스타일을 적용하는 방법에도 기존의 import를 사용하는 것 이외에 라이브러리를 사용하는 다양한

        velog.io

         

        반응형

        'react & next.js' 카테고리의 다른 글

        Next.js 에서 local, development, production 환경 셋팅하기  (0) 2022.10.13
        자식 컴포넌트에 전달하는 props 관련 테스트  (0) 2022.05.29
        리액트 렌더링 시점 및 훅 호출 순서 확인해보기  (1) 2022.05.16
        react 에서 useEffect 가 2번 호출되는 현상 (두 번 렌더링 되는 현상)  (0) 2022.05.15
        리액트 훅(react hook)에 대해  (0) 2022.05.07
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
      • CSS Module 
      • Styled JSX
      • 마치며
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.