react useRef리액트 useRefuseReffrontend

React useRef 쉽게 이해하기

KUKJIN LEE
KUKJIN LEE
2024년 3월 29일
165

우선 useRef를 쉽게 이해하려면 렌더링과 DOM에 대한 이해가 필요합니다.

 

  • 렌더링: 사용자 인터페이스를 화면에 그리는 과정, React에서는 상태(state), 속성(Props) 변경이 발생하면 Component가 렌더링되어 변경된 내용을 화면에 반영합니다. 즉 화면이 새로 고쳐지는 과정을 의미합니다.

  • DOM(Document Object Model): 구조적 표현을 메모리에 저장.. 이러면 어려우니까 웹 페이지에 모든 요소(element), 속성(attribute), 내용(content)를 조작할 수 있게 해주는 방식으로 생각하면 좋습니다.

 

useRef는 React의 Hook중 하나로, 렌더링 간 값을 ‘기억’할 수 있게 해주는 기능입니다. DOM 요소에 접근하기 위해 사용하기도 하지만, Component 내부에서 렌더링에 영향을 주지 않으면서 데이터를 저장할 수 있는 용도로 사용됩니다.

 

useState와 useRef는 비슷하지만 렌더링이 된다. 않된다로 나뉠 수 있습니다. useRef를 사용하면 값이 변해도 Component는 리렌더링되지 않습니다.

 

useRef 사용 예시

import React, { useRef, useEffect } from 'react';

function TextInputWithFocusButton() {
  const inputEl = useRef(null);

  const onButtonClick = () => {
    // input 창으로 이동됩니다.
    inputEl.current.focus();
  };

  return (
    <>
      <input ref={inputEl} type="text" />
      <button onClick={onButtonClick}>Focus the input</button>
    </>
  );
}
import React, { useRef, useEffect } from 'react';

function TimerComponent() {
  const count = useRef(0);

  useEffect(() => {
    setInterval(() => {
      count.current += 1;
      console.log(`Timer: ${count.current}`);
    }, 1000);
  }, []); // 빈 배열을 넘겨서 마운트 시에만 effect를 실행합니다.

  return <div>Check the console for timer updates.</div>;
}

관련 글

TypeScript any 린트 에러(no-explicit-any) 근본적으로 해결하기

TypeScript 프로젝트에서 @typescript-eslint/no-explicit-any 린트 에러는 단순 규칙 비활성화로 해결할 문제가 아닙니다. 눈 앞 문제는 해결할 수 있지만, TypeScript를 사용하는 가장 중요한 이유를 위배하게 됩니다. any 타입은...

2025년 7월 23일269

JSP 주석, 아직도 `` 쓰시나요? 올바른 사용법

코드를 작성하다 보면 주석을 남기는 경우가 많습니다. 하지만 JSP 환경에서 어떤 주석을 사용하냐에 따라 보안 수준과 성능 이 크게 달라집니다. 표준 주석: 서버 사이드 주석 &lt;%-- --%&gt; JSP 페이지 내 개발 관련 주석은 &lt;%-- --%&gt; 를 사용하는게 좋습니다...

2025년 7월 9일144

쉽게 만드는 React Tab 라이브러리 react-tabs

개발자가 커스텀 스타일을 쉽게 적용할 수 있도록 최소한의 스타일만 제공하여 유연한 스타일링 이 가능한 라이브러리입니다. 상태 관리가 내장되어 있어 탭 선택 및 패널 표시 로직을 직접 구현할 필요 없이 간편하게 사용할 수 있습니다. 기본 사용법 먼저, 라이브러리를 설치합...

2025년 6월 17일173

Next.js 환경 변수 NEXT_PUBLIC 접두사 역할

NEXT_PUBLIC 접두사를 붙이면 변수의 접근 범위가 완전히 달라집니다. 이 차이점을 이해하는 것이 안전하고 효율적인 Next.js 애플리케이션을 구축하는 데 중요합니다. NEXT_PUBLIC 접두사가 없는 환경 변수 (서버 전용) NEXT_PUBLIC 접두사 없이...

2025년 6월 13일156