티스토리 뷰

부트캠프

React useState

mimi-latte 2022. 6. 8. 21:49

useState에 대해 설명하기 전 읽고 가기

  • Hook이 나오기 이전에는 클래스형 컴포넌트를 이용하여 상태 관리를 했으며 이를 이용하여 코드 작성 시 this와 bind 및 클래스 문법에 대한 이해가 필요하며, 로직의 재사용이 어렵다. 
  • 하지만 Hook의 등장으로 함수형 컴포넌트에서도 상태관리를 할 수 있게 되었다.

 

Hook이란 어떤 것일까?

  • 리액트 16.8 버전부터 Hook이 등장하며 상태 관리를 위해 클래스형 컴포넌트를 이용하여 상태 관리를 할 필요성이 없어졌다.
  • Hook은 함수형 컴포넌트에서 React state와 life-cycle을 연동할 수 있게 하는 함수이다.
  • Hook의 장점은 코드가 간결해져 가독성이 좋고, 클래스형 컴포넌트에서 문제가 되는 HOC헬(추후 조사예정)을 벗어 날 수 있다.
  • Hook에는 useState, useEffect 등의 함수가 포함되어 있으며 해당 포스트는 useState에 대해 소개할 것이다.
  • class형 컴포넌트와 Hook을 사용한 함수형 컴포넌트에서 각각 상태 관리에 대한 코드 작성을 했을 시 Hook을 사용한 코드가 보다 가독성이 좋음을 확인할 수 있다(출처 : https://studyingych.tistory.com/59).
{클래스형 컴포넌트를 통한 상태 관리}
import React, { Component } from 'react';

class App extends Component {
  state = {
    count: 0,
  };

  countUpdate(n) {
    this.setState({
      count: n,
    });
  }
  render() {
    const { count } = this.state;
    return (
      <div>
        <div>
          <h1>{count}</h1>
          <button
            onClick={() => {
              this.countUpdate(count + 1);
            }}
          >
            증가
          </button>
        </div>
      </div>
    );
  }
}

export default App;

 

{Hook을 이용한 함수형 컴포넌트에서의 상태 관리}
import React, { Component, useState } from 'react';

const App = () => {
  const [count, setCount] = useState(0);

  return (
    <>
      {count}
      <button onClick={() => setCount(count + 1)}>증가</button>
    </>
  );
};

export default App;

 

 

useState란?

  • state를 함수형 컴포넌트 안에서 사용할 수 있게 하는 함수
  • state와 setState()로 구성되어 있고, 초기에 받은 initialValue는 처음 렌더링에만 사용한다.
  • useState를 이용하기 위해서 React로부터 useState를 불러온다
import { useState } from "react";

 

  • 호출한 useState는 컴포넌트 안에서 호출하며 아래와 같은 문법을 가진다.
function Example() {
	const [isChecked, setIsChecked] = useState(true);
    // const [state 저장 변수, state 갱신 함수] = useState(초깃값);
}

 

  • useState 예시
const CheckExample = () => {
  const [isChecked, setIsChecked] = useState(false);

  const handleChecked = (event) => {
    setIsChecked(event.target.checked);
  };

  return (
    <>
      <input type="checkbox" checked={isChecked} onChange={handleChecked} />
      <span>{isChecked ? "체크" : "체크 해제"}</span>
    </>
  );
};
export default CheckExample;

 

 

'부트캠프' 카테고리의 다른 글

postman 으로 openAPI 데이터 조회하기  (0) 2022.06.13
웹 애플리케이션 아키텍처  (0) 2022.06.09
React props와 state  (0) 2022.06.07
생성자 함수 constructor  (0) 2022.05.26
내장 고차 함수  (0) 2022.05.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함