본문 바로가기
Study/React

React .js - Component

by 김만두_ 2023. 6. 21.

React에서 컴포넌트란?

  • JS에서 함수는 코드를 더 명확하고 재사용 가능하게 해준다. 함수는 함수 안에 다른 함수를 호출 할 수 있는데, 이는 함수가 해야 할 일을 명확히 분리할 수 있게 해준다. 즉 모든 명령을 하나의 함수 안에 다 작성할 필요가 없고, 각 작업에 특화된 여러 함수를 만들어 기능을 분리할 수 있다.
  • 리액트의 컴포넌트는 함수의 이러한 특징을 웹 앱의 비주얼에 적용한 것이라고 할 수 있다. 컴포넌트를 통해 UI를 재사용 가능한 개별적인 여러 조각으로 나누고, 각 조각을 개별적으로 살펴볼 수 있다. 또한 컴포넌트 안에 컴포넌트를 포함할 수도 있다.
  • 개념적으로 컴포넌트는 JavaScript 함수와 유사하다. 컴포넌트는 “props”라고 하는 임의의 입력을 받은 후, 화면에 어떻게 표시되는지를 기술하는 React 엘리먼트를 반환한다.
  • 리액트에서 컴포넌트는 JSX를 통해 HTML 엘리먼트를 출력할 수 있는, 재사용 가능한 자바스크립트 덩어리다.

함수 컴포넌트와 클래스 컴포넌트

  • 리액트에서 컴포넌트를 만드는 방식은 전통적인 함수를 이용한 방식과 ES6에서 제공하는 class를 이용하는 방식이 있다. JS에서 class는 결국 함수이기 때문에 React의 관점에서 볼 때 이 두 가지 유형의 컴포넌트는 동일하다.

함수 컴포넌트

  • 리액트에서 컴포넌트를 정의하는 가장 간단한 방법으로, 이 함수는 데이터를 가진 하나의 “props” (props는 속성을 나타내는 데이터) 객체를 매개변수로 받은 후 이를 이용하여 React 엘리먼트를 반환하므로 유효한 React 컴포넌트다. 이러한 컴포넌트는 JavaScript 함수이기 때문에 말 그대로 “함수 컴포넌트”라고 칭한다. 
  • function Welcome(props) { // 컴포넌트이름은 무조건 PascalCase로 작성한다. return <h1>Hello, {props.name}</h1>; }
  • 장점
    • 클래스 컴포넌트보다 후에 나왔으며 컴포넌트 선언이 편하다.
    • 메모리 자원을 클래스 컴포넌트보다 덜 사용한다.
  • 단점
    • state, lifeCycle 관련 기능사용 불가능하다. (하지만 이는 Hook을 통해 해결 가능하다.)

클래스 컴포넌트

  • 리액트에서 클래스 컴포넌트는 React.Component를 상속 받아 작성한다. 클래스 컴포넌트는 props라는 매개변수를 받아오고 render 함수를 통해 표시할 뷰 계층 구조를 반환한다.
  • class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }
  • 장점
    • state, lifeCycle 관련 기능 사용이 가능하다.
    • 임의 메서드를 정의할 수 있다.
  • 단점
    • 메모리 자원을 함수형 컴포넌트보다 조금 더 사용한다.

'Study > React' 카테고리의 다른 글

[ React ] Zustand로 상태 관리하기 🐻 (with. Typescript)  (0) 2024.02.19
Recoil에 대해 알아보자.  (1) 2023.10.17
React.js - State / Props  (0) 2023.06.22
React.js - SPA / React Router  (0) 2023.06.22
React.js - JSX  (0) 2023.06.21