(펌)개념 정리

React 클래스형 컴포넌트와 함수형 컴포넌트의 차이

ble194 2022. 10. 11. 15:24

React 클래스형과 함수형 컴포넌트 차이점 

No 클래스형 컴포넌트 함수형 컴포넌트 
선언의 차이  - class 키워드 필요 
- Component로 상속을 받아야하며, render 메소드가 반드시 필요함
- state,lifeCycle 기능 사용이 가능


- state,lifeCycle 관련 기능 사용 불가능
- 컴포넌트 선언이 용이함
state - constructor 안에서 this.state 초기값 설정
- constructor 없이도 바로 state 초기값을 설정 가능
- this.setState()를 통해 state값을 변경 
- 컴포넌트의 state는 객체형식 
- useState 함수로 state 사용 
- useState 함수를 호출하면 배열이 반환되는데 첫번째 원소는 현재상태, 두번째 원소는 상태를 바꿔주는 함수 ! 

props - this.props로 값을 불러올 수 있음

- props를 불러욜 필요 없이 바로 호출이 가능

 


1. 선언의 차이 

  •  클래스형 컴포넌트 

- class 키워드가 필수로 들어가며, Componnent로 상속을 받아야 합니다

- render 메소드가 반.드.시 있어야함

import React,{Component} from 'react';

class App extends Component {
   render() {
     const name = "또깽이 소소하고 행복한 공간";
     return <div className="react">{name}</div>
   }
}

export default App;

함수형 컴포넌트

import React from 'react';
import './App.css';

function App() {
  const name = '또깽이의 소소하고 행복한 공간';
  return <div className = "react">{name}</div>
}

export default App;

2. state 

state란? 컴포넌트 내부에서 바뀔 수 있는 값 ! 

 

클래스형 - 컴포넌트의 state는 객체형식 

this.state = { monsters: [], userInput: "", };

클래스형 - this.setState()를 통해 state값을 변경 

onClick = {() => {
   this.setState({number: number * 1});
}}

 

함수형 - setState 함수로 state의 값을 변경

const [number, setnumber] = useState('');

3. props

클래스형 - this.props로 값을 불러 올 수 있다 !

class MyComponent extends Component {
   render() {
      const {name, habit} = this.props;
      return (
         <div>
            이릉은 {name} 입니다. <br/>
            나의 취미는 {habit} 입니다.
         </div>
      )
   }
}

 

함수형 - props를 불러 올  필요 없이 바로 호출할 수 있다.

const MyProps = ({ name, habit}) => {

  return (
     <div> 
        안녕하세요, 제 이름은 {name} 입니다.
        나의 취미는 {habit} 입니다.
      </div>
  );
}

 

 

결론, 

클래스형은 render함수를 사용해서 렌더링을하며, state값을 사용할 때 constructor함수에서 this.state로 초기값 설정이 가능합니다. state를 업데이트 하기 위해서는 this.setState를 사용합니다. props를 조회하거나 이벤트 핸들링 할 때 this를 사용할 수 있습니다. 또한, lifecycle 메소드를 가지고 사용할 수 있습니다.

함수형은 리액트 hooks 중 useState 를 사용하여 state 값을 업데이트하거나 props와 이벤트 헨들링에 this가 필요하지 않습니다. 또한, lifecycle도 useEffect 라는 hooks를 사용합니다.

 

 

 

참고자료 

https://born-dev.tistory.com/27

https://koras02.tistory.com/m/177

 

[React] 클래스형 컴포넌트와 함수형 컴포넌트의 차이

1. 클래스형 컴포넌트 react 컴포넌트를 선언하는 두가지 방식 중 하나. [클래스 컴포넌트 & 함수 컴포넌트] 현재 자주 사용하지 않지만, 아직도 사용하는 기업들도 있다. 클래스형으로 구성된 프

koras02.tistory.com

 

 

출처 - https://daojiong.tistory.com/63#:~:text=%ED%81%B4%EB%9E%98%EC%8A%A4%ED%98%95%EC%9D%80%20render%ED%95%A8%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%B4%EC%84%9C%20%EB%A0%8C%EB%8D%94%EB%A7%81%EC%9D%84%ED%95%98%EB%A9%B0%2C%20state%EA%B0%92%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20constructor%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C,%EA%B0%92%EC%9D%84%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EA%B1%B0%EB%82%98%20props%EC%99%80%20%EC%9D%B4%EB%B2%A4%ED%8A%B8%20%ED%97%A8%EB%93%A4%EB%A7%81%EC%97%90%20this%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.