React 기초
[React] Components와 Props (3)
Evolving Developer
2023. 2. 7. 14:47
Components 컴포넌트
- UI를 재사용 가능한 개별적인 조각으로 나눔
- JS의 함수와 유사
- 이름의 시작은 항상 대문자
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
props
- 순수 함수처럼 동작 -> 입력한 값을 바꾸려 하지 않고 동일한 결과 반환
- 값을 바꾸고 싶을 땐 state 사용 (다음 장)
React element에 사용자 정의 components 담기
const element = <Welcome name="cho" />;
// props <- {name: 'cho'}
components 여러번 렌더링
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
function App() { // 여러 번 렌더링 하는 새로운 함수
return (
<div>
<Welcome name="cho" />
<Welcome name="kim" />
<Welcome name="hawng" />
</div>
);
}
components 쪼개기
- 가독성과 단순성
쪼개기 전
function Comment(props) {
return (
<div className="Comment">
// 쪼개기 1
<div className="UserInfo">
<img className="Avatar"
src={props.author.avatarUrl}
alt={props.author.name}
/>
// 쪼개기 2
<div className="UserInfo-name">
{props.author.name}
</div>
</div>
);
}
쪼개기 1 - Avatar() 함수 생성
function Avatar(props) {
return (
<img className="Avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}
쪼개기 2 - Avatar() 함수를 이용해서 UserInfo() 함수 생성
function UserInfo(props) {
return (
<div className="UserInfo">
<Avatar user={props.user} />
<div className="UserInfo-name">
{props.user.name}
</div>
</div>
);
}
결과
function Comment(props) {
return (
<div className="Comment">
<UserInfo user={props.author} />
</div>
);
}