본문 바로가기

리액트

클래스형 컴포넌트와 함수형 컴포넌트

컴포넌트를 선언하는 방법은 두 가지이다.

하나는 함수형 컴포넌트이고, 또 다른 하나는 클래스형 컴포넌트이다. 

 

리액트를 처음 설정하면, 다음과 같은데 이 형태를 함수형 컴포넌트라고 한다.

import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

 

클래스형 컴포넌트는 다음과 같다.

역할은 함수형 컴포넌트와 똑같다.

(함수형 컴포넌트와의 차이점은 클래스형 컴포넌트의 경우 state기능 및 라이프사이클 기능, 임의 메서드를 정의할 수 있다는 것이다. )

클래스형 컴포넌트에는 render가 꼭 있어야 한다. 

import React, { Component } from "react";

class App extends Component {
  render() {
    const name = "react";
    return <div>{name}</div>;
  }
}

export default App;

함수형 컴포넌트는 클래스형 컴포넌트보다 선언하기가 편하다. 

메모리 자원도 덜 사용한다. 또한, 프로젝트를 완성하여 빌드한 후 배포할 때도 함수형 컴포넌트를 사용하는 것이 결과물의 파일 크기가 더 작다. 

다만, 함수형 컴포넌트는 state와 라이프사이클 API의 사용이 불가능하다. (이 단점은 Hooks기능이 도입되면서 사라졌다)

 

'리액트' 카테고리의 다른 글

Hooks  (0) 2021.07.30
State  (0) 2021.07.24
Props  (0) 2021.07.19
컴포넌트 생성  (0) 2021.07.18
JSX란?  (0) 2021.07.15