useRef

yeonnnn·2025년 4월 9일

React

목록 보기
4/12
post-thumbnail

렌더링과 관계 없는 값을 관리할 때 사용한다.
DOM 요소에 직접 접근하고 싶을 때, 이전 상태의 값을 기억하거나 이전 렌더링 정보를 저장할 때 사용한다.
-> 타이머ID, 이전 스크롤 위치, DOM의 요소 참조, API 응답 시간 체크용 시작시간, 렌더링과 상관없는 캐시값을 기억해야할 때 주로 사용한다.

✅ 기본 사용법

export default function Counter () {
  let ref = useRef(0);
  
  function handleClick(){
  	ref.current = ref.current + 1;
    alert(`You clicked ${ref.current} times!`); 
  }
  
  return (
    <button onClick={handleClick}>
  	  Click me!
    </button>
  )
}

➕ Ref 로 DOM 조작

import { useRef } from "react";

export default function Form() {
  const inputRef = useRef();

  const handleClick = () => {
    inputRef.current.focus();
  };
  return (
    <>
      <input ref={inputRef} />
      <button onClick={handleClick}>Focus the input</button>
    </>
  );
}

ref.current는 이벤트 헨들러, useEffect에서 읽거나 써야 한다.

// ✅ Effect 안에서 읽고 쓰거나, 함수 안에서 읽고 써야 한다.
function App(){
  useEffect(() => {
  	ref.current = 1;
  })
  
  function handleClick(){
  	ref.current = ref.current + 1;
  }
}

// ❌렌더링 중에 쓰거나, 렌더링 중에 읽으면 안된다.
function App(){
  ref.current = 1;
  return (
  	<h1>{ref.current}</h1>
  )
}
profile
차근차근, 한 걸음씩

0개의 댓글