컴포넌트를 선언하는 방법은 두 가지이다.
하나는 함수형 컴포넌트이고, 또 다른 하나는 클래스형 컴포넌트이다.
리액트를 처음 설정하면, 다음과 같은데 이 형태를 함수형 컴포넌트라고 한다.
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기능이 도입되면서 사라졌다)