공부하는 중~~/웹

[React] Props vs State, Class component vs Functional component 비교하기

임대추 2021. 1. 12. 17:46

 

1. Props vs State

props와 state는 모두 HTML의 출력물에서 나오는 것들로 구성된다. 

두 개 모두 컴포넌트의 입력 데이터로 컴포넌트에서 다른 컴포넌트로 데이터를 보내며 렌더링을 하며 보여주는 것이다.

이때 Props는 부모 컴포넌트에서 자식 컴포넌트로 데이터를 보낼때 사용하며 Immutable, 즉 변할 수 없는 읽기 전용이다.

State의 경우 각 컴포넌트가 데이터, 상태에 대한 데이터를 가지고 있으며 Mutable, 변경할 수 있는 객체이다. (setState()로 변경)

 

Props의 예시로는 아래와 같다.

import React, { Component} from 'react';
import Test from './Test';

Class ReactTest extends Component {
	render() {
		return <Test />;
	}
}

export default ReactTest;

 

State의 예시로는 아래와 같다.

import React, { Component} from 'react';

Class ReactTest extends Component {
	state = {
		num: 1
	};

	render() {
		<div>
			<h1>num</h1>
		</div>
	}
}

export default ReactTest;

 

코드를 보면 알 수 있다싶이 Props의 경우 컴포넌트채로 return을 하지만 State의 경우 컴포넌트가 자체적으로 가진 state 데이터를 return 하고 있는 것을 확인할 수 있다.

 

 

2. Class Component vs Functional Component

 

component lifecycle

원래는 가장 큰 차이는 위의 lifecycle에 정의된 것들을 할 수 있느냐 없느냐 였다.

 

Class Component의 경우

1. lifecycle에 정의된 메소드를 이용할 수 있다.

2. 비교적 복잡한 동작을 사용할 수 있다.

3. 비교적 느리고 코드가 킬다.

 

Functional Component의 경우

1. lifecycle에 정의된 메소드들을 사용할 수 없다.

2. 비교적 간단한 동작만 사용할 수 있다.

3. 비교적 빠르고 코드가 짧다.

 

와 같은 특징을 가지고 있었는데 위의 '원래는'이 들어간 것처럼 과거에는 그랬었다.

React 16.8 버전이후에는 React Hook이 등장하며 달라졌다.

Hook을 이용하여 Functional도 Class 형처럼 여러가지 복잡한 동작과 lifecycle에 정의된 메소드들을 사용할 수 있게 된 것이다.

그래서 요즘에는 Class의 장점을 Functional이 가져갔기때문에 Class Component보다 Functional Component를 더 많이 사용하는 추세라고 한다.

 

 

 

참고 자료

 

uberVU/react-guide

React adventures . Contribute to uberVU/react-guide development by creating an account on GitHub.

github.com

 

 

반응형