[React.js] State(상태), Counter 예제 만들기

2022. 5. 7. 14:23·공부/React.js
반응형

 

React 게시글은 대부분 인프런의 '한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지' 강의를 기반으로 내용을 정리했습니다.

 

State(상태)

State는 계속해서 변화하는 특정 상태이다. 상태에 따라 각각 다른 동작을 한다. 쉽게 예를 들면 웹에서 자주 사용하는 다크 모드(Dark Mode) 테마를 껐다가, 켰다가 하는 게 상태의 하나이다.
즉 react에서 State(상태)란 계속적으로 값이 변화하는, 동적인 데이터를 갖는 컴포넌트이다.

 

 실습을 위해 Counter.js를 만들어보자. Counter.js는 숫자가 있고 + 버튼을 누르면 숫자를 1씩 증가시키고, - 버튼을 누르면 숫자를 1씩 감소시키는 페이지이다.

const Counter = () =>{
    return (
        <div>
            <h2>0</h2>
            <button>+</button>
            <button>-</button>
        </div>
    )
};

export default Counter;


App.js 파일에 Counter 컴포넌트를 추가하자.

//import './App.css';
import MyHeader from './MyHeader';
import React from 'react';
import Counter from './Counter'; // import 추가

function App() {

  const number = 5;

  return (
    <div>
      <MyHeader/>
      <Counter/> <!--컴포넌트 추가-->
    </div>
  );
}

export default App;
반응형

페이지가 잘 나온다. 아직 버튼에 대한 이벤트는 없어서 버튼을 눌러도 아무런 반응이 없을 것이다.
여기에서 0은 상태를 나타낼 수 있다. 0에서 시작하고 1씩 증가하고, 1씩 감소하는 count 상태이다.
이 페이지를 react가 의미하는 State로 바꾸기 위해 코드를 수정해보자.

import React, {useState} from 'react'; // State는 reacet의 기능이기 때문에 react를 import해야 한다.

const Counter = () =>{

    const [count, setCount] = useState(0);
    // useState메서드 : 배열을 반환, 배열의 비구조화 할당을 통해 
    // 0번째 index count, 1번째 index를 setCount라는 상수로 받아옴
    // count는 상태의 값으로 사용
    // setCount는 count의 상태를 변화시키는 상태변화 함수로써 사용
    // useState(0)은 count 상태의 초깃값(0)을 설정
    // 즉 const [상태 변수, 상태 변화 함수] = useState(초깃값);의 형태이다.

    const onIncrease = () => {
        setCount(count+1);
    }

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

    return (
        <div>
            <h2>{count}</h2>
            <button onClick={onIncrease}>+</button>
            <button onClick={onDecrease}>-</button>
        </div>
    )
};

export default Counter;

아주 잘 작동이 된다^^

버튼을 누를 때마다 숫자 값이 변화한다. 이유는 버튼을 눌러 상태 값을 변화할 때마다 return을 다시 해주고 있기 때문이다. 즉 상태 값이 변경 될 때마다 Counter를 호출하고 return을 다시 받아 화면을 새로 그리는 것이다. 이 과정을 리렌더(rerender)라고 한다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/React.js' 카테고리의 다른 글
  • [React.js] React에서 사용자 입력 처리하기
  • [React.js] Props
  • [React.js] JSX
  • [React.js] Create React App - 프로젝트 생성, 실행, 종료
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    oracle
    Java
    react
    운영체제
    코딩테스트
    인프런
    에러해결
    토이프로젝트
    스프링부트
    JPA
    QueryDSL
    egov
    RESTful
    전자정부프레임워크
    IT
    자바스크립트
    프론트엔드
    프로그래머스
    SQL
    넥사크로
    알고리즘
    백준
    springboot
    개발자
    MSA
    Spring
    기출문제
    토비의스프링부트
    방통대
    SpringBoot를 이용한 RESTful Web Service 개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[React.js] State(상태), Counter 예제 만들기
상단으로

티스토리툴바