본문 바로가기
Web/React.js

[STUDY] State Hook 사용하기

by 폴우정킴 2021. 3. 21.

Hook 와 같은 기능을 하는 클래스

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }

  render() {
    return (
      <div>
        <p>You clicked {this.state.count} times</p>
        <button onClick={() => this.setState({ count: this.state.count + 1 })}>
          Click me
        </button>
      </div>
    );
  }
}
  • 위 React 클래스에서 state 는 { count: 0} 이며 사용자가 this.setState()를 호출 하는 버튼을 클릭했을때 state.count를 증가시킨다.
function Example(props) {
	// Hooks 사용 
	return <div />;
}

// or

const Example = (props) => {
	// Hooks 사용
	return <div />;
}
  • React 의 함수 컴포넌트는 위와 같이 사용할 수 있다.
  • 함수 컴포넌트는 state 가 없는 컴포넌트이다.
  • Hook는 state를 함수 안에서 사용할 수 있게 해준다.

Hook 란?

import React, { useState } from 'react'; function Example() { // ... }

import React, { useState } from 'react';

function Example() {
  // ...
}
  • useState 는 state 를 함수 컴포넌트 안에서 사용할 수 있게 해준다.
  • 클래스를 사용할 때, constructor 안에서 this.state 에 값을 설정함을로 state를 초기화 했다.
  • 함수 컴포넌트는 this를 가질 수 없기 때문에 useState Hook를 직접 컴포넌트에서 호출한다.
import React, { useState } from 'react';

function Example() {
  // 새로운 state 변수를 선언하고, 이것을 count라 부르겠습니다.
  const [count, setCount] = useState(0);
  • useState는 클래스 컴포넌트의 this.state가 제공하는 기능과 똑같다.
  • 일반적으로 사라지는 변수와는 다르게 state 변수는 React에 의해 사라지지 않는다

useState 인자

  • state 의 초기 값이다.
  • 객체일 필요는 없고 숫자타입과 문자 타입을 가질 수 있다.

useState 반환값

  • state 변수와 해당 변수를 갱신할 수 있는 함수 두가지를 반환한다.
  • 클래스 컴포넌트의 this.state.count 와 this.setState와 유사하다.

State 가져오기

<p>You clicked {this.state.count} times</p>
  • 클래스 컴포넌트는 this.state.count를 사용한다.
<p>You clicked {count} times</p>
  • 함수 컴포넌트는 count를 직접 사용할 수 있다.

State 갱신하기

<button onClick={() => this.setState({ count: this.state.count + 1 })}>
   Click me
</button>
  • 클래스 컴포넌트는 this.setState()를 호출한다.
<button onClick={() => setCount(count + 1)}>
    Click me
</button>
  • 함수 컴포넌트는 setCount 와 count 변수를 사용한다.

대괄호가 의미하는 것

const [count, setCount] = useState(0);
  • 자바스크립트의 문법인 배열 구조 분해를 통해 총 두개의 값을 만들고 있다.
  • 즉 useState를 사용하면 count라는 첫번째 값과 setCount라는 두번쨰 값을 반환한다.

여러개의 state 변수 사용하기

function ExampleWithManyStates() {
  // 여러 개의 state를 선언할 수 있습니다!
  const [age, setAge] = useState(42);
  const [fruit, setFruit] = useState('banana');
  const [todos, setTodos] = useState([{ text: 'Learn Hooks' }]);
  • 위의 처럼 각각 다른 이름으로 state를 선언 하는것이 유용하다.
  • age, fruit, todos 라는 지역 변수를 가지며 개별적으로 갱신 할 수 있다.

'Web > React.js' 카테고리의 다른 글

[STUDY] Hook의 규칙  (0) 2021.03.23
[STUDY] Effect Hook 사용하기  (0) 2021.03.22
[STUDY] Hook 개요  (0) 2021.03.19
[STUDY] Hook 소개  (0) 2021.03.18
[STUDY] 성능 최적화  (0) 2021.03.17

댓글