본문 바로가기

개발/React

[kmhdev] 클래스 컴포넌트 ? 함수형 컴포넌트 ?

* 함수형 컴포넌트

함수형 컴포넌트는 아래 소스와 같이 함수형태로 컴포넌트를 구현하는것입니다.

흔히 사용하는 es6의 화살표 함수를 이용해서 구현이 가능하죠. 

저는 그럼 함수형 컴포넌트를 도대체 왜 쓰는거지? 왜 클래스 컴포넌트랑 함수형으로 구분을 해서 나눈거지라는 의문이 들어 찾아봤습니다.

 

2019년 함수형 컴포넌트는  개편되어 클래스형 컴포넌트보다 첫 마운팅 시점이 5~10%정도까직 상승 되었다하며

또한 기존 클래스 컴포넌트보다 코드가 짧으며 후에 유지보수를 할떄 가독성이 매우 좋아졌습니다.

 

 

과거에는 컴포넌트 state를 사용하기위해 함수형 컴포넌트를 -> 클래스 컴포넌트로 변환하는 작업을 많이 했엇지만\

최근에는 hook라는것이 등장하여 함수형 컴포넌트에서도 state를  사용할 수 있게되었습니다.

 

hook와 라이프사이클은 추후에 정리하여 올리겠습니다. 

 

Mounting(생성) : 컴포넌트가 새롭게 생성되는 시점정도로 이해

import React from 'react';

function App() {
  const title = 'hello KMH!';
  return <div>{title}</div>;
}

export default App;

* 클래스 컴포넌트

사실 클래스 컴포넌트가 함수형 컴포넌트 보다 좋은점은 오래되어서 에러가 날 확률이 적거나 문제가 생겼을때 빠르게 정보를 흭득할 수 있는 정도입니다.

 

함수형 컴포넌트가 클래스 컴포넌트보다 늦게 나왔기 때문에 함수형 컴포넌트가 더 좋습니다...

 

클래스 컴포넌트는 반드시 render() 함수를 이용해야합니다

또한 return은 반드시 <div>로 묶여야합니다.

import React, { Component } from 'react';

class App extends Component {
  render() {
    const title = '리액트';
    return <div>{title}</div>;
  }
}

export default App;