클래스 컴포넌트와 함수형 컴포넌트의 코드를 비교해보면서 함수형 컴포넌트의 소중함(?)에 대해서 알아보도록 하자..
위와 같이 + 버튼을 누르면 숫자가 1씩 증가하고, -버튼을 누르면 숫자가 1씩 감소되는 아주 간단한 기능을 만들어보면서 class형 컴포넌트와, 함수형 컴포넌트의 코드 양을 비교해보자.
클래스(class)
export default class App extends React.Component {
state = {
num: 1
};
render() {
const num = this.state;
return (
<div className="app">
{num}
<button onClick={this.incre}>+</button>
<button onClick={this.decre}>-</button>
</div>
);
}
incre = () => {
this.setState((state) => {
return {
num: state.num + 1
};
});
};
decre = () => {
this.setState((state) => {
return {
num: state.num - 1
};
});
};
}
함수(function)
import React, { useState } from "react";
export default function App() {
const [num, setNum] = useState(0);
const incre = () => {
setNum(num + 1);
};
const decre = () => {
setNum(num - 1);
};
return (
<div className="App">
{num}
<button onClick={incre}>+</button>
<button onClick={decre}>-</button>
</div>
);
}
딱 보기만 해도 전체적인 코드양에서부터 차이가 난다.
물론 함수형 컴포넌트의 장점은 더 많지만 코드량만 따져보더라도 아주 간단한 기능 구현만 해도 이렇게 차이가 나는데, 좀 더 복잡한 기능을 만들게 되면 코드양의 차이가 상당할 것 같다...
'Front-end > React.js' 카테고리의 다른 글
프론트엔드 아키텍처 다층화구조(layered architecture) (+실제 폴더 구성) (5) | 2022.04.12 |
---|---|
[Vue vs. React 비교] (4)vue에 watch가 있다면 react에는 useEffect가 있다 (0) | 2022.03.15 |
[Vue vs. React 비교] (3)vue에 computed가 있다면 react에는 useMemo가 있다 (0) | 2022.03.13 |
[Vue vs. React 비교] (2) 반복, 조건부렌더링은 어떻게 다를까 (0) | 2022.03.09 |
[Vue vs. React 비교] (1) template 생김새, router (3) | 2022.03.08 |
댓글