티스토리 뷰
반응형
React 컴포넌트 형식은 클래스형 컴포넌트와 함수형 컴포넌트로 나뉜다. 리액트 16.8 이전에는 함수형 컴포넌트는 간단한 동작에만 사용이 되었지만, 요즘은 클래스형 컴포넌트보다 함수형 컴포넌트를 많이 사용하는 추세이다. 이 둘의 차이점에 대해 자세히 알아보자.
기본 형태
Class (클래스형) 컴포넌트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import React, { Component } from 'react'
class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
name: props.name
};
}
render() {
return <h1>Hello, {this.state.name}</h1>;
}
}
export default Hello;
|
cs |
Functional (함수형) 컴포넌트
1
2
3
4
5
6
7
8
9
|
import React from 'react'
function Hello(props) {
return (
return <h1>Hello, {props.name}</h1>
)
}
export default Hello;
|
cs |
또는, 화살표 함수 형태도 가능하다.
1
2
3
4
5
6
7
8
9
|
import React from 'react'
const Hello = (props) => {
return (
return <h1>Hello, {props.name}</h1>
)
}
export default Hello;
|
cs |
비교
Class Component | Functional Component |
- 더 많은 기능 제공 (State, Lifecycle) - 비교적 길고 복잡한 코드 - 비교적 느림 |
- 비교적 제한적 기능 - 제공 짧고 간결한 코드 - 비교적 성능이 좋음 |
예전에는 함수형 컴포넌트가 기능적인 부분에서 제한이 많았다. 그래서 함수형 컴포넌트를 주로 사용했었다. 함수형 컴포넌트에서만 사용이 가능한 기능은 대표적으로 Lifecycle과 State가 있다.
아래 도표는 리액트의 Lifecycle(생명주기)를 나타낸다. componentWillMount()
, componentDidMount()
등 Lifecycle에 정의된 메서드는 함수형 컴포넌트에서만 사용이 가능하다.
함수형 컴포넌트에서는 State(상태)를 관리할 수 있지만, 함수형 컴포넌트에서는 State를 생성할 수 없다.
Functional(함수형) 컴포넌트와 Hooks
그런데 왜 요즘은 함수형 컴포넌트를 많이 사용하는 걸까? 함수형 컴포넌트에서만 가능했던 Lifecycle과 State 기능은 여러 가지 Hook으로 보완할 수 있게 되었기 때문이다.
useEffect()
useEffect Hook을 사용하면 함수형 컴포넌트에서도 Lifecycle에 따른 메서드를 사용할 수 있다.
useState()
useState Hook을 사용하면 함수형 컴포넌트에서도 State를 생성할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
|
import React, { useState } from 'react'
const Hello = (props) => {
const [name, setName] = useState("철수");
return (
return <h1>Hello, {name}</h1>
)
}
export default Hello;
|
cs |
반응형
'React' 카테고리의 다른 글
[React] react-ga로 리액트와 구글 애널리틱스 연결하기 (0) | 2022.03.07 |
---|---|
[React] Slick Slider 사용하기 + TypeScript (0) | 2022.02.26 |
[React] 설치와 Client + Server 세팅 (0) | 2022.02.20 |
[React] React npx 설치 오류 (1) | 2021.12.15 |
[React] onClick target - 자식 요소 클릭 이벤트 방지 (target, currentTarget 차이) (0) | 2021.12.13 |