728x90
1. css 파일명에 module을 추가한다.
*변경 전: Button.css
*변경 후: Button.module.css
2. 컴포넌트에 css import 구문을 수정한다.
*변경 전: import "./Button.css"
*변경 후: import styles from "./Button.module.css"
3. 컴포넌트에서 css 사용할 태그의 클래스명을 변경한다.
*변경 전 : className="button"
*변경 후: className={styles.button}
import React from 'react';
import styles from './Button.module.css';
const Button = props => {
return (
<button type={props.type} className={styles.button} onClick={props.onClick}>
{props.children}
</button>
);
};
export default Button;
4. 어떤 원리로?
브라우저에서 엘리먼트를 확인해보면 class명 뒤에 이상한 문자가 붙은 것을 확인할 수 있따.
리액트는 이렇게 css를 모듈화하면 고유한 랜덤문자를 붙여 해당 클래스를 특정함
5. 모듈화된 CSS 를 동적으로 사용하기
1) 먼저 모듈화된 css 에서 클래스명 없는 자식을 가진 부모 태그는 이렇게 표현
*예를 들면, 이런 상황 <div className="mom"><input /><button /></div>
className={styles['form-control']} // 스트링 클래스명을 대괄호로 감싼다.
2) 조건에 따른 동적으로 css 부여하기
*벡틱으로 감싸고 조건을 부여한다.
<div className={`${styles['form-control']} ${!isValid && styles.isValid}`}> //중간에 띄어쓰기 꼭 해주자
그지같지만 원리만 조금 이해하면 쉽게 작성할 수 있다.
728x90
'react.js' 카테고리의 다른 글
[react 리액트] Portal 을 사용하여 모달창 만들기 (0) | 2023.06.28 |
---|---|
[react 리액트] JSX <div> 다이어트 하는법 (div soup, react.frament, <></>) (0) | 2023.06.26 |
[react 리액트] 초간단 동적으로 CSS 클래스 설정하기 (0) | 2023.06.23 |
[react 리액트] 초간단 동적으로 CSS 인라인 스타일 넣는 방법 (0) | 2023.06.23 |
[react 리액트] 초간단 양방향 바인딩 하는법 (0) | 2023.06.21 |