🔎 React 공식문서 자료
React_Components와 Props
컴포넌트를 통해 UI를 재사용 가능한 개별적인 여러 조각으로 나누고, 각 조각을 개별적으로 살펴볼 수 있다.
개념적으로 컴포넌트는 JavaScript 함수와 유사하다. props
라고 하는 임의의 입력을 받은 후, 화면에 어떻게 표시되는지를 기술하는 React 엘리먼트를 반환한다.
📑 참고자료
React : Components
devowen_[React] 클래스형 컴포넌트 vs 함수형 컴포넌트
⚙️ 함수형 컴포넌트
return
을 이용하여 JSX 반환// ✨ 일반 function 정의
// 자신이 종속된 객체를 this로 가리킴
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// ✨ arrow function정의
// 자신이 종속된 인스턴스를 가리킴
const Welcome = (props) => {
return <h1>Hello, {props.name}</h1>;
}
⚙️ 클래스 컴포넌트
extends React.Component
속성 포함 ▶ 컴포넌트를 상속 받음render()
함수를 이용하여 JSX 반환props
접근 시 this
키워드 사용class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
🛑 React 관점
함수형
과 클래스
유형은 동일하다.⚙️ DOM 태그만 사용한 React 엘리먼트
const element = <div />;
⚙️ 사용자 정의 컴포넌트를 사용한 React 엘리먼트
props
라고 함const element = <Welcome name="Sara" />;
⚙️ 코드 예시
<Welcome name="Sara" />
엘리먼트로 ReactDOM.render()
를 호출{name: 'Sara'}
를 props로 하여 사용자 정의 Welcome
컴포넌트를 호출Welcome
컴포넌트는 props를 받아 <h1>Hello, Sara</h1>
를 반환<h1>Hello, Sara</h1>
엘리먼트와 일치하도록 DOM을 효율적으로 업데이트🛑 컴포넌트의 이름
컴포넌트는 자심의 출력에 다른 컴포넌트를 참조할 수 있다. 이는 모든 세부 단계에서 동일한 추상 컴포넌트를 사용할 수 있음을 의미한다. React 앱에서는 버튼, 폼, 다이얼로그, 화면 등의 모든 것들이 흔히 컴포넌트로 표현된다.
⚙️ 예시 코드
Welcome
컴포넌트를 여러 번 렌더링하는 App
컴포넌트⚙️ 예시 코드 - 1
⚙️ 예시 코드 - 2
Avatar
컴포넌트function Avatar(props) {
return (
<img className="Avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}
UserInfo
컴포넌트function UserInfo(props) {
return (
<div className="UserInfo">
<Avatar user={props.user} />
<div className="UserInfo-name">
{props.user.name}
</div>
</div>
);
}
⚙️ 예시 코드 - 3
함수 컴포넌트
나 클래스 컴포넌트
모두 컴포넌트 자체에서 props
를 수정할 수 없다.
⚙️ 예시 코드 - 1
function sum(a, b) {
return a + b;
}
⚙️ 예시 코드 - 2
function withdraw(account, amount) {
account.total -= amount;
}
✨ props를 사용할 경우 주의 사항
props
를 다룰 때 반드시 순수 함수처럼 동작해야 함!!