본문 바로가기
IT/React

useState 함수 사용예

by 골든크랩 2022. 9. 23.
728x90
반응형

setState() - 함수 기반 상태 관리

React Hooks에서 제공하는 useState() 함수를 사용해서 위의 클래스 기반 컴포넌트를 함수 기반으로 재작성해보았습니다. setState() 함수는 배열을 리턴하는데 첫 번째 원소는 상태 값을 저장할 변수이고 두번 째 원소는 해당 상태 값을 갱신할 때 사용할 수 있는 함수입니다. 그리고 setState() 함수에 인자로 해당 상태의 초기 값을 넘길 수 있습니다.

const [<상태 값 저장 변수>, <상태 값 갱신 함수>] = useState(<상태 초기 값>);

 

예제)

 
import React, { useState } from 'react';

function Counter(props) {

    // 공통변수
    // 1) 변수와 2)변수의 값을 바꿀 수 있는 함수....
    // 두개를 짝궁으로 리턴하는 기능.
    // useState를 통해서 변수를 초기화
    const [count, setCount] = useState(10)

    let titleStyle = {
        fontSize: "23pt",
        color:"red"
    }

    return (
        <div>
            <h1 style={titleStyle}>This is a counter</h1>
            <h1 style={{color:"magenta",
                    backgroundColor:"cyan"}}>This is another counter</h1>
            <h1>현재 카운트 : {count}</h1>
        </div>
    );
}

export default Counter;

 

 

상태 변경 함수를 만들때 꼭 화살표함수를 만들어 사용해야 함.

또한 아래 예제에서, setCount 함수를 사용해야만 상태값이 변경된 것을 React가 알 수 있다. 

 

import React, { useState } from 'react';

function Counter(props) {

    // 공통변수
    // 1) 변수와 2)변수의 값을 바꿀 수 있는 함수....
    // 두개를 짝궁으로 리턴하는 기능.
    // useState를 통해서 변수를 초기화
    const [count, setCount] = useState(10)

    // 상태를 변경하려면...
    const increase = () => {
        setCount(count + 1);
    }

    const decrease = () => {
        setCount(count - 1);
    }

    let titleStyle = {
        fontSize: "23pt",
        color:"red"
    }

    return (
        <div>
            <h1 style={titleStyle}>This is a counter</h1>
            <h1 style={{color:"magenta",
                    backgroundColor:"cyan"}}>This is another counter</h1>
            <h1>현재 카운트 : {count}</h1>
            <button type="button" onClick={increase}>증가</button>
            <button type="button" onClick={decrease}>감소</button>
        </div>
    );
}

export default Counter;
728x90
반응형

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

For루프 예제  (0) 2022.09.23
props, useState, 계산기 예제  (0) 2022.09.23
JSX 문법  (0) 2022.09.23
React 소스 수정 진입점  (0) 2022.09.22
샘플 코드 03 - 부모->자식으로 데이터 전달 예제(props 사용)  (0) 2022.09.22

댓글