Front-end/React

useRef와 useState의 차이

mooyou 2024. 12. 6. 22:08
728x90
300x250
SMALL

React에서 useRef와 useState는 상태를 관리하고 요소를 참조하는데 사용되지만, 목적과 동작 방식이 다르다.

 

1. useRef

useRef는 React의 훅으로, DOM 요소나 변경 가능한 값을 참조할 때 사용된다.

 

특징

  • 값이 변경되어도 렌더링을 트리거하지 않음 : useRef로 저장된 값은 변경되더라도 컴포넌트가 다시 렌더링되지 않음
  • 초기화 : useRef는 인자로 초기값을 받을 수 있으며, 초기값은 .current프로퍼티로 접근할 수 있다.
  • DOM 참조 : 주로 특정 DOM요소를 참조하거나 저장하기 위해 사용된다.
  • 변경 가능한 값 저장 : 렌더링 관련 없이 값을 유지하고 싶을 때 사용된다.

사용 예시

 

1. DOM 참조 

import React, { useRef } from "react";

const App = () => {
  const inputRef = useRef(null);

  const focusInput = () => {
    inputRef.current.focus(); // input 요소에 포커스를 설정
  };

  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={focusInput}>Focus Input</button>
    </div>
  );
};

 

 

2. 값 저장 및 유지(렌더링 트리거 방지)

import React, { useRef } from "react";

const App = () => {
  const count = useRef(0);

  const increment = () => {
    count.current += 1; // 값은 변경되지만 렌더링은 발생하지 않음
    console.log(count.current);
  };

  return <button onClick={increment}>Increment</button>;
};

 

 

2. useSTate

useState는 React의 상태 관리 훅으로, 컴포넌트의 렌더링을 트리거하는 상태 값을 관리하는데 사용된다.

 

특징

  • 값이 변경되면 렌더링 트리거 : useState로 저장된 값이 업데이트되면 컴포넌트가 다시 렌더링된다.
  • 초기값 설정 : useState는 인자로 초기값을 받으며, 상태 값과 이를 업데이트 하는 함수(setter)를 반환한다.
  • 상태 업데이트 함수 : 상태를 업데이트 할 때 setState함수를 사용해야 한다.

사용 예시

 

1. 상태 관리

import React, { useState } from "react";

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

  const increment = () => {
    setCount(count + 1); // 상태 변경, 렌더링 트리거
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

 

 

2. 사용자 입력 관리

import React, { useState } from "react";

const App = () => {
  const [text, setText] = useState("");

  const handleChange = (event) => {
    setText(event.target.value); // 입력값 변경 시 렌더링
  };

  return (
    <div>
      <input type="text" value={text} onChange={handleChange} />
      <p>입력한 값: {text}</p>
    </div>
  );
};

 

 

3. 차이점 비교

  useRef useState
목적 DOM 참조 또는 값 유지 상태 값 관리 및 렌더링 트리거
렌더링 트리거 값 변경 시 렌더링되지 않음 값 변경 시 렌더링됨
초기값 설정 .current로 접근
(useRef(initialValue))
상태 값과 setState로 관리
(useState(initialValue))
주요 사용 사례 DOM 요소 참조, 렌더링과 무관한 값 저장 컴포넌트 상태 관리

 

 

4. 언제 어떤 것을 사용해야 할까?

  • 렌더링 트리거가 필요하다면 useState : 사용자 입력, 데이터 업데이트, UI 상태 변경 등을 관리할 때
  • 렌더링 트리거가 필요 없다면 useRef :  DOM 요소를 참조하거나 렌더링과 관계없는 값을 저장할 때

 

 

728x90
반응형
LIST