2 분 소요


State? Props?

  • props는 상위 컴포넌트에서 하위 컴포넌트로 전달 해 주어서, 하위 컴포넌트에서 해당하는 값을 노출 시킬 수 있도록 해 줌
  • props는 상위 컴포넌트에서 하위 컴포넌트로 전달 해 주는 값 이기 때문에, 실제로 props가 사용되는 컴포넌트 내부에서는 그 값을 바꿀 수 없음
  • state는 리액트 컴포넌트 “내부” 에서 바꿀 수 있는 값을 의미

클래스형 컴포넌트의 State

State를 사용하기 위해서는 클래스 내부에 아래와 같이 선언 해 준다

constructor(props) {
    super(props);
    this.state = {
        number: 0,
    };
}

실제 사용되는 모습

import React, { Component } from "react";

export default class TestStateClassComponent extends Component {
    constructor(props) {
        super(props);
        this.state = {
            number: 0,
        };
    }

    render() {
        const { number } = this.state;

        return (
            <div>
                <h4>{number}</h4>

                <button
                    onClick={() => {
                        this.setState({ number: number + 1 });
                    }}
                >
                    +1
                </button>
            </div>
        );
    }
}

함수형 컴포넌트의 State

함수형 컴포넌트에서 state를 사용하기 위해 아래와 같이 작업 해 준다

import React, { useState } from "react";

const [message, setMessage] = useState();

실제 사용되는 모습

import React, { useState } from "react";

export default function TestFuncComponent() {
    const [message, setMessage] = useState();
    const onClickEnter = () => setMessage("안녕하세요!");
    const onClickLeave = () => setMessage("안녕히가세요!");

    return (
        <div>
            <h3>{message}</h3>
            <button onClick={onClickEnter}>입장</button>
            <button onClick={onClickLeave}>퇴장</button>
        </div>
    );
}

state에 기본 값을 넣어 줄 수 도 있다

const [message = "React입니다", setMessage] = useState();

State? Props?

  • Props are passed from parent components to child components, allowing child components to display those values
  • Since props are values passed from parent to child components, the values cannot be changed inside the component where props are actually used
  • State refers to values that can be changed “inside” a React component

State in Class Components

To use State, declare it inside the class as follows:

constructor(props) {
    super(props);
    this.state = {
        number: 0,
    };
}

How It’s Actually Used

import React, { Component } from "react";

export default class TestStateClassComponent extends Component {
    constructor(props) {
        super(props);
        this.state = {
            number: 0,
        };
    }

    render() {
        const { number } = this.state;

        return (
            <div>
                <h4>{number}</h4>

                <button
                    onClick={() => {
                        this.setState({ number: number + 1 });
                    }}
                >
                    +1
                </button>
            </div>
        );
    }
}

State in Functional Components

To use state in functional components, do the following:

import React, { useState } from "react";

const [message, setMessage] = useState();

How It’s Actually Used

import React, { useState } from "react";

export default function TestFuncComponent() {
    const [message, setMessage] = useState();
    const onClickEnter = () => setMessage("안녕하세요!");
    const onClickLeave = () => setMessage("안녕히가세요!");

    return (
        <div>
            <h3>{message}</h3>
            <button onClick={onClickEnter}>입장</button>
            <button onClick={onClickLeave}>퇴장</button>
        </div>
    );
}

You can also set a default value for state:

const [message = "React입니다", setMessage] = useState();

댓글남기기