[React] Component와 Props
2022. 9. 26. 20:28ㆍWeb/React
리액트 컴포넌트란?
리액트로 만들어진 앱을 이루는 최소한의 단위
개념적으로 컴포넌트는 JavaScript 함수와 유사하다. "props"라고 하는 임의의 입력을 받은 후, 화면에 어떻게 표시되는지를 기술하는 React 엘리먼트를 반환한다.
함수 컴포넌트와 클래스 컴포넌트
함수 컴포넌트
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
데이터를 가진 하나의 "Props" 객체 인자를 받은 후 React 엘리먼트를 반환
클래스 컴포넌트
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
컴포넌트 렌더링
React 엘리먼트는 사용자 정의 컴포넌트로도 나타낼 수 있다.
const element = <Welcome name="Sara" />;
React가 사용자 정의 컴포넌트로 작성한 엘리먼트를 발견하면 JSX 어트리뷰트와 자식을 해당 컴포넌트에 단일 객체로 전달한다. 이 객체를 "Props"라 한다.
컴포넌트 합성
컴포넌트는 자신의 출력에 다른 컴포넌트를 참조할 수 있다.
Welcome을 여러번 렌더링하는 App 컴포넌트
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
function App() {
return (
<div>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</div>
);
}
컴포넌트 추출
function Comment(props) {
return (
<div className="Comment">
<div className="UserInfo">
<img className="Avatar"
src={props.author.avatarUrl}
alt={props.author.name}
/>
<div className="UserInfo-name">
{props.author.name}
</div>
</div>
<div className="Comment-text">
{props.text}
</div>
<div className="Comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
위 코드에서 Avatar를 추출
function Avatar(props) {
return (
<img className="Avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}
props는 읽기 전용이다.
모든 React 컴포넌트는 자신의 props를 다룰 때 반드시 순수 함수 처럼 동작해야 한다.
'Web > React' 카테고리의 다른 글
| [React] 이벤트 처리하기 (0) | 2023.03.09 |
|---|---|
| [React] State (0) | 2023.03.01 |
| [React] 엘리먼트 렌더링 (0) | 2022.09.26 |
| [React] JSX (0) | 2022.09.26 |