오늘의 글 목차
① React 파일 실행 시 흐름 이해하기
② Component란?
③ Component에 css 적용하기 (css, props)
④ props의 구조 분해 할당
⑤ children 사용해 보기
A. npm start
npm start를 통해 서버를 구동시키는 순간 index.html 파일에 index.js 파일을 번들링 하는 파일이 삽입이 된다고 봐도 됨 (bundle.js)
* 번들링: 모듈들의 의존성 관계를 토대로 그룹화 함

bundle.js가 하는 그룹화
index.js가 렌더링시키는 파일이 App.js라 볼 수 있는데, 여기서 App.js를 Component라 할 수 있음
A. 시맨틱 태그(의미가 있는 태그)를 이용해 각 코드의 의미를 나타내게 될 것 (내부에 코드가 많아지는 경우 관리가 어려워짐)
종류
함수 컴포넌트 & 클래스 컴포넌트
function MyComponent(){
return(
<div>
Hello React
</div>
);
}
// 화살표
const MyComponent = () => {
return(
<div>
Hello React
</div>
);
};
export default MyComponent; // 얘 없으면 오류
import React from "react";
function App() {
return (
<div>
<MyComponent /> {/* 컴포넌트 호출 */}
</div>
);
}
export default App;
App.js → porps 전달
import React from "react"; // 필수
import MyComponent from "./components/MyComponent"; // 사용할 컴포넌트 import 필수
function App() {
return (
<div>
<MyComponent one="프로퍼티 전달 방법" two="공부 중 :-3"/>
</div>
);
}
export default App;
MyComponent.js → props 받음 (화살표 함수 활용)
import React from "react"; // 필수
const MyComponent = (props) => {
return(
<p>props1: {props.one} props2: {props.two}</p>
)
};
export default MyComponent; //필수

// 생성
inport React, {Component} from 'react';
class MyComponent extends Component{
render(){
return(
<div>
Hello React
</div>
)
}
}
1. css 사용
import './App.css'
function App() {
return (
<div className="App"> // 전체에 css 적용
<MyComponent one="프로퍼티 전달 방법" two="공부 중 :-3"/>
<MyComponent one="여러 개도 가능" two="이게 컴포넌트 재사용 :-3"/>
<CssStudy />
</div>
);
}
.App{
text-align: center;
}

2. props 사용
- 박스를 하나 만들어서 테스트 해 볼 것
기본 틀
// App.css : 여기서 변경도 가능하지만 props를 활용할 것 .box{ border: 1px solid; width: 100px; height: 100px; color: white; // 색상 배경에 하얀 글씨로 설정 font-weight: 800; // 잘 보이도록 폰트 두께 설정 }//박스가 있는 컴포넌트 파일 return( <> <div className="box">{props.name}</div> </> )//App.js <CssStudy 여기서전송="값을"/> // 위 글씨에 맞게 색상을 전달 받아 변경하도록
App.js
<CssStudy name="Blue Box" color="blue"/>
→ CssStudy라는 (박스가 있는) Component에 name에는 Blue Box 값을, color에는 blue라는 색상을 보내고 있는 것
CssStudy.js
const CssStudy = (props) => {
return(
<>
<div className="box" style={{backgroundColor: props.color}}>{props.name}</div>
</>
)
}
→ props로 넘어온 name 값을 중괄호로 감싸 값을 출력하고 있음
→ 색상은 태그 내에 style 속성 중 backgroundColor에 전달 중 (중요: style의 값은 중괄호로 두 번 감싸줘야 함)
<CssStudy name="Blue Box" color="blue"/>
<CssStudy name="Pink Box" color="pink"/>
<CssStudy name="Yellow Box" color="yellow"/>

A. error는 나지 않지만, css 파일의 값만 적용되어 있는 채로 전달 값에 대한 적용은 안 된 채로 나타나 있을 것
이런 경우 props의 default 값을 지정해 줄 수도 있음
<CssStudy name="Blue Box" color="blue"/> //전달 O
<CssStudy /> //전달 X
const CssStudy = (props) => {
return(
<>
<div className="box" style={{backgroundColor: props.color}}>{props.name}</div>
</>
)
}
//default 값 설정
CssStudy.defaultProps = {
color: 'black',
name: 'Default Box'
}

// 중괄호로 감싸야 함 (안 그럼 에러)
const CssStudy = ({name, color}) => {
return(
<>
<div className="box" style={{backgroundColor: color}}>{name}</div>
</>
)
}
Wrapbox.js
import '../App.css';
import React from 'react';
const Wrapbox = ({children}) => {
return(
<>
{children}
</>
)
}
export default Wrapbox;
App.js
<Wrapbox>
<CssStudy name="Blue Box" color="blue"/>
<CssStudy />
</Wrapbox>
