티스토리 뷰
😎 이전게시글
2023.03.08 - [개발/React] - React App 만들기(1) - 프로젝트 생성
1. Button 컴포넌트 생성
src 폴더 하위에 text를 props로 가지는 Button.js 파일을 생성한다.
function Button({text}) {
return (
<button>{text}</button>
)
}
// App.js에서 import 하기위해 해당 코드를 추가한다.
export default Button;
Button 컴포넌트를 App.js에 import한다. 컴포넌트는 무조건 대문자로 시작해야 한다!
import Button from "./Button";
function App() {
return (
<div>
<Button text={"Continue"} />
</div>
);
}
export default App;
2. Props 타입 설정하기
prop-types 모듈을 설치한다.
> npm i prop-types
Button 컴포넌트에 type을 추가한다.
// 추가
import PropTypes from "prop-types";
function Button({text}) {
return (
<button>{text}</button>
)
}
// 추가
Button.propTypes = {
text: PropTypes.string.isRequired
}
export default Button;
3. 스타일 지정하기
3-1. 전역으로 스타일 생성
src 폴더 하위에 styles.css 파일을 생성한다.
button {
color: white;
background-color: tomato;
}
App.js에 해당 css파일을 import한다.
import Button from "./Button";
// 추가
import "./styles.css";
function App() {
return (
<div>
<h1>Welcome back!</h1>
<Button text={"Continue"} />
</div>
);
}
export default App;
css가 적용되었다!
하지만 이렇게 하면 모든 버튼에 똑같은 css가 적용된다.
3-2) Button 컴포넌트에 직접 스타일 생성
function Button({text}) {
return (
<button style={{
backgroundColor:"tomato",
color:"white"
}}>{text}</button>
)
}
코드가 지저분해진다..
3-3) CSS Module 생성
CSS Module이란 CSS를 사용할때 클래스 이름을 고유한 값으로 자동으로 만들어서 컴포넌트 스타일 클래스 이름이 중첩되는 현상을 방지해주는 기술이다.
src 폴더 하위에 Button.module.css 파일을 생성한다.
{클래스명}.module.css 파일명을 사용하여 module을 생성한다.
.btn {
color: white;
background-color: tomato;
}
Button 컴포넌트에 Button.module.css을 import한다.
import PropTypes from "prop-types";
// 추가
import styles from "./Button.module.css"
function Button({text}) {
return (
// className 추가
<button className={styles.btn}>{text}</button>
)
}
Button.propTypes = {
text: PropTypes.string.isRequired,
}
export default Button;
+
여러개의 클래스를 적용할 때는 백틱(`)을 사용한다.
<button className={`${styles.btn} ${styles.btn2}`}>{text}</button>
참고)
https://react.vlpt.us/styling/02-css-module.html
2. CSS Module · GitBook
02. CSS Module 이번에는 CSS Module 이라는 기술에 대해서 알아봅시다. 리액트 프로젝트에서 컴포넌트를 스타일링 할 때 CSS Module 이라는 기술을 사용하면, CSS 클래스가 중첩되는 것을 완벽히 방지할
react.vlpt.us
반응형
'개발 > React' 카테고리의 다른 글
React 상태관리 라이브러리 - Redux vs Recoil (1) | 2023.05.11 |
---|---|
React 기본 - Router (0) | 2023.05.09 |
React 기본 - Component, Props, Event, State (0) | 2023.05.03 |
React 기본 - UseEffect (0) | 2023.03.09 |
React App 만들기(1) - 프로젝트 생성 (1) | 2023.03.08 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- recoil
- 을지로
- 견과류
- 하루견과
- 타코
- 간식
- 타입스크립트
- 다국어
- frontend
- Componenet
- 프로트엔드
- .env
- Next.js
- 읍천리382
- svelte
- React
- 유지어터
- TypeScript
- 스벨트
- 닭가슴살
- 프로틴
- Redux
- react-i18next
- props
- useEffect
- 리액트
- 프론트엔드
- 환경변수
- 다이어트
- 산과들에
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함