클래스형 컴포넌트와 함수형 컴포넌트 비교
클래스형 컴포넌트와 함수형 컴포넌트 비교
🚀 선언방식
클래스형 컴포넌트
import React, { Component } from 'react';
class class extends Component {
render() {
return (
<div>
</div>
);
}
}
export default class;
함수형 컴포넌트
import React from 'react';
const function = () => {
return (
)
};
export default function;
//or
import React from 'react';
function function() {
return (
<div>
</div>
);
}
export default function;
🚀 State : 상태
- 컴포넌트 내부에서 가지고 있는 컴포넌트의 상태값
- 화면상에 보여줄 컴포넌트의 정보(상태)를 지니고 있는 객체
클래스형 컴포넌트
render
함수가 필요하며,return
문 안에 JSX요소 작성- state를 설정할 때 클래스 선언문과 render 사이에
constructor
함수 작성
class class extends Component {
constructor(){
super();
this.state = {
key : value
}
}
render() {
this.state
값에 컴포넌트 초기 상태값 설정- 컴포넌트의 state는 객체
this.setState
로state
값 변경
함수형 컴포넌트
const [current, setCurrent] = useState(1);
- Hook인 useState를 사용하며 상태유지값과 그 값을 반환하는 함수를 반환
- state(
current
)는 첫번째 전달된 인자1
과 동일 setCurrent
함수로 state 값 갱신
🚀 Props : properties(속성)
- 컴포넌트의 속성값
- 부모 컴포넌트로부터 전달받은 데이터를 지니고 있는 객체
클래스형 컴포넌트
this.props.funding_user_Info;
this.props.fundingTotalCount;
this.props.likeTotalCount;
//구조분해할당
const { funding_user_Info, fundingTotalCount, likeTotalCount } = this.props;
- this.props.(props 객체의 특정 key)를 통해 전달받은 데이터 사용
함수형 컴포넌트
const BookingCard = ({ result, initialstate }) => {};
- 바로 호출 가능
🚀 LifeCycle
클래스형 컴포넌트
1. constructor
2. render
3. componentDidMount
4. (fetch 완료)
5. render
6. (setState)
7. componentDidUpdate (setState 되었기 때문에 컴포넌트 업데이트 발생)
8. componentWillUnmount
- 컴포넌트가 DOM 위에서 생성되기 전 후 데이터가 변경되어 상태를 업데이트 하기 전 후 로 실행되는 메소드
함수형 컴포넌트
useEffect
함수 컴포넌트 내에서 side effects를 수행- 클래스형 컴포넌트와는 다르게
하나의 API로 통일
useEffect(function);
useEffect(() => {}, [])
🚀 함수형 컴포넌트의 장점
- 클래스형 컴포넌트보다 선언이 간편
- 클래스형 컴포넌트보다 메모리자원 덜 사용
- 컴포넌트 사이에서 상태와 관련된 로직 재사용 가능 (Custom Hook)