[개념] 클래스형 컴포넌트 (1)

Haeryun·2022년 3월 29일
0

[개념] React

목록 보기
2/4

클래스형 컴포넌트란? 자바스크립트의 최신 문법인 class키워드를 사용하여 정의한 컴포넌트.
리액트 초기 상태(state) 관리가 필요한 컴포넌트는 클래스형 컴포넌트로 정의하였다. 상태 (state)는 컴포넌트에서 초기화되고 업데이트 되는 데이터이다.

💜 클래스형 컴포넌트 기본 구조 💜

import React,{Component} from "react";

class Person extends Component {
    render(){
        const name='Jess'
        const age=99

        return (
            <React.Fragment>
                <h3>{name}</h3>
                <h4>{age} </h4>
            </React.Fragment>
        )
    }
}

export default Person;

이미지로 보면 다음과 같다.

위 코드는 간단한 형태의 클래스형 컴포넌트이다.


리액트에서 모듈을 가져올 때에는 import 키워드를 사용하고 내보낼 때에는 export 키워드를 사용한다.

위 코드에서는 react 라이브러리로부터 React와 Component 모듈을 가져온다.

Component 는 React 객체의 프로퍼티이므로 구조분해(destructuring assignment)를 이용하여 가져올 수 있다.


class 키워드를 사용하며 기본적으로 React.Component를 상속한다.

자바스크립트에서 상속은 extends 키워드를 사용한다.

Person은 컴포넌트의 이름이며, 일반적으로 컴포넌트 이름의 첫글자는 대문자로 선언한다.

render 메서드는 클래스형 컴포넌트에서 반드시 존재해야한다.


Component 는 React 모듈의 프로퍼티이므로 아래와 같이 작성해도 동일하게 동작한다.

import React,{Component} from "react";

class Person extends React.Component{
    render(){
        const name ='Jess'
        const age=99

        return (
            <React.Fragment>
                <h3>{name}</h3>
                <h4>{age}</h4>
            </React.Fragment>
        )
    }
}

export default Person;

이미지로 보면 다음과 같다.

리액트에서는 하나의 최상위 요소만 렌더링 할 수 있다.

그렇지 않으면 에러가 발생한다.

React.Fragment는 HTML 템플릿 안의 다양한 요소들(예를 들어, 위 코드의 h4, h3 태그)을 하나의 그룹으로 묶어주는 최상위 요소의 역할을 하지만 실제 웹화면에서는 보이지 않는다.

즉, 렌더링 할 HTML 요소가 두개 이상인 경우에는 반드시 위와 같이 React.Fragment 나 div로 묶어줘야 한다.

import React from "react";
class Person extends React.Component{
    render(){
        const name='Jess'
        const age=99

        return(
            <>
            <h3>{name}</h3>
            <h4>{age}</h4>
            </>
        )
    }
}

export default Person 

React.Fragment 컴포넌트는 위와 같이 축약형으로 사용할 수도 있다.

💜 클래스형 컴포넌트 사용하기 💜

App 파일에서 다음과 같은 코드를 적으면 모듈의 import는 끝이난다.

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

class App extends Component {
    render(){
        return 
        <Person country="korea"></Person>
    }
}

export default App;

App 컴포넌트에 Person 컴포넌트를 가져온 다음 render 메서드에서 HTML 요소처럼 사용하면 된다.

HTML 요소와의 차이점은 리액트에서는 반드시 슬래쉬(/)로 컴포넌트의 끝을 알려줘야 한다.

<Person country="korea"></Person>

그냥 처럼 사용하면 아래와 같은 에러가 발생한다.

render 메서드에서 HTML 요소를 생성하는 코드를 JSX 문법 이라고 한다.

profile
프론트엔드 개발자. 벨로그 시작 2022.03.28~

0개의 댓글

관련 채용 정보