단순히 처음 React를 배울 때 함수 컴포넌트를 사용하라고 해서, 함수 컴포넌트가 더 간단하다고 해서, 코드를 짤 때 그냥 함수 컴포넌트를 사용하는 것은 아닌지!
이번 기회에 더 구체적으로 비교해보고, 왜 우리가 함수 컴포넌트를 사용해야 하는지 분석해본다.
🅲 클래스 컴포넌트
Architecture >
class Page extends React.Component {
constructor(props) {
super(props);
}
render() {}
}
🅵 함수 컴포넌트
Architecture >
function Page(props) {
return (<div>React-Component</div>);
}
🅲 클래스 컴포넌트
Example >
class Contract extends React.Component {
render() {
// 기본적으로는 렌더링 시점의 값 고정이 불가능.
// 따라서 아래와 같이 클로저를 이용하여 렌더링 시점의 값을 고정시키고 사용.
const props = this.props;
const sign = () => {
setTimeout(() => console.log("서명인: ", props.name), 3000);
}
return <button onClick={sign}>서명</button>;
}
}
🅵 함수 컴포넌트
Example >
function Contract(props) {
// 렌더링 시점의 값을 고정시킬 수 있음(!)
const sign = () => {
setTimeout(() => console.log("서명인: ", props.name), 3000);
}
return <button onClick={sign}>서명</button>;
}
🅲 클래스 컴포넌트
this
를 고정해야 한다. 🅵 함수 컴포넌트
this
가 없다.🅲 클래스 컴포넌트
🅵 함수 컴포넌트
🅲 클래스 컴포넌트
다양한 부분에서 비교해봤을 때 비교적 함수 컴포넌트의 사용법이 단순하고, 코드가 간결하다. 또한 요즘 클래스 컴포넌트로 구현한 프로젝트도 함수 컴포넌트로 변경하는 추세이다.