포트폴리오 정리를 하다 보니 작년에 리액트를 잠깐 찍먹 느낌으로 공부했던 프로젝트의 코드르 보게 되었다. 그 프로젝트에서는 ComponentDidMount, ComponenetUpdate, ComponentWillUnMount를 사용했던 것을 볼 수 있었다. 최근에 다시 리액트 공부를 하고 있는데 19년도 리액트 16.8v부터 훅(hook)을 지원하기 시작해서 현재는 공식문서에 함수형 컴포넌트와 훅을 같이 사용하라는 것이 권장되고 있다고 한다.

그래서 공부를 하고 있는데 이제 더이상 클래스 컴포넌트보다는 함수형 컴포넌트를 사용하는 것이 사용하기도 편하고 , 메모리 자원을 덜 차지하기 때문에 효율적이라는 것이다. 많은 개발자들의 블로그에서 언급이 되는 장점인 것 같다 또한 this 선언자 또한 붙히지 않아도 되니 this에 대한 이해, JS 클래스에 대한 깊은 이해도 적어지게 되었다.(나의 개인적인 생각..)
코드에 대한 예를 들면서 설명하는게 제일 이해가 잘 가지만 아직 공부하고 있는 입장에서 자세한 설명을 하기에는 내 부족한 지식이 보일 것 같다. 그래서 일반적인 차이를 글로 통해서 나열해 보겠다.
클래스형 컴포넌트
- state기능과 lifecycle 기능을 사용할 수 있다.
- 임의의 메서드를 정의 가능하다.
- 클래스형 컴포넌트에서는 render() 함수가 꼭 필요하고 그 안에 JSX를 반환해야 한다.
함수형 컴포넌트
state 기능과 lifecycle 기능을 사용할 수 없다.-> 훅(hook)으로 해결!- 메모리 자원을 클래스형 컴포넌트보다 덜 사용한다.
- 클래스형 컴포넌트보다 더욱 선언하기가 편하다 ( const [counter, usecounter] = useState(0) )
물론 아직 함수형 컴포넌트가 등장한 지 얼마 지나지 않았기 때문에 무조건적으로 함수형 컴포넌트가 좋다!라는 말은 아끼는 게 좋지 않을까 싶다. 공부를 계속하면서 클래스형 컴포넌트와 함수형 컴포넌트에 대해서 좀 더 자세히 설명할 수 있는 수준이 되면 이 글을 리팩터링 해서 정리를 하지 않을까 싶다.
'개발' 카테고리의 다른 글
[Javascript] this에 대해서 (0) | 2021.08.16 |
---|---|
NVM을 이용하여 Node 버전 관리하기 (0) | 2021.06.20 |
Git 화살표 폴더 해결 ! (0) | 2021.03.16 |
Node JS , React 를 이용한 Boiler-plate 구현하기 - Client Part (0) | 2021.02.01 |
Node JS , React 를 이용한 Boiler-plate 구현하기 - Server Part (0) | 2021.02.01 |