Post

useState와 useRef Hook

React Hook의 개념

Hook은 리액트 v16.8에 새로 도입된 기능으로서 함수형 컴포넌트에서도 상태 관리를 할 수 있는 useState 그리고 렌더링 직후 작업을 설정하는 useEffect 등의 기능들을 제공한다

useState

가장 기본적인 Hook으로서 상태를 관리하기 위해 사용되는 Hook이다

  • 함수형 컴포넌트 안에 state를 추가하여 사용한다
  • 현재 상태를 나타내는 state값과 이 상태를 변경하는 setState값을 한 쌍으로 제공한다
  • state는 초기값을 설정할 수 있으며, 초기값은 첫 렌더링 때 한번 사용된다.
  • state는 객체일 필요 없이 문자열, 숫자, boolean, 배열, null, 객체 등의 여러가지 다양한 값을 넣을 수 있다.
  • useState는 State 값이 바뀔때마다 재렌더링(컴포넌트 재호출)이 된다는 특성을 가지고 있다

absolute


1
2
3
4
5
6
7
8
9
10
11
12
import React, { useState } from "react";

const Counter = () => {
  const [value, setValue] = useState(0);
  return (
    <div>
      <p> 현재 카운터 값은 {value}입니다. </p>
      <button onClick={() => setValue(value + 1)}> +1 </button>
      <button onClick={() => setValue(value - 1)}> -1 </button>
    </div>
  );
};

useRef

리액트에서 제공하는 Ref를 사용하면 돔(DOM) 요소들을 직접 조작할 수 있다

  • useRef를 사용하여 특정 DOM요소에 접근하여 값을 초기화할 수 있다
  • useRef를 사용하여 특정 DOM요소에 focus를 잡을 수 있다
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
import { useRef, useState } from "react";

function InputComponent() {
  const [text, setText] = useState("");
  const textRef = useRef();

  const handleOnChange = (e) => {
    setText(e.target.value);
  };
  const handleOnClick = () => {
    if (text.length < 5) {
      alert("5글자보다 커야합니다");
      textRef.current.focus();
    } else {
      alert(text);
      textRef.current.value = "";
    }
  };

  return (
    <div>
      <input ref={textRef} value={text} onChange={handleOnChange} />
      <button onClick={handleOnClick}>완료</button>
      <p>{text}</p>
    </div>
  );
}

export default InputComponent;
This post is licensed under CC BY 4.0 by the author.