useRef 는 렌더링에 필요하지 않은 값을 참조할 수 있는 React Hook이다.
// GPT 가 제공해준 예시 코드
import { useRef } from 'react';
function MyComponent() {
const myRef = useRef(initialValue);
// myRef.current에 값 저장하기
myRef.current = someValue;
// myRef.current 값 참조하기
console.log(myRef.current);
// ...컴포넌트 코드 계속...
}
컴포넌트가 리렌더링되어도 저장된 값이 유지 된다.
DOM 노드에 직접 접근해야 하는 경우
useRef를 사용하면 컴포넌트 내부에서 DOM 노드에 직접 접근할 수 있다.
예를 들어, 특정 버튼을 클릭하면 모달을 열고 모달 내부의 input요소에 포커스를 맞추고 싶은 경우가 있다.
이전 값과 새 값을 비교해야 하는 경우
useRef를 사용하면 이전 값과 새 값을 비교할 때 유용하다.
예를 들어, useEffect 훅에서 이전 상태값과 현재 상태값을 비교하여 특정 작업을 수행해야 하는 경우가 있다. (ex. 글 작성 중에 새로고침이나 뒤로가기를 제한하는 경우)
자식 컴포넌트에게 함수를 전달해야 하는 경우
useRef 를 사용하면 자식 컴포넌트에게 함수를 전달할 때 유용하다.
예를 들어, 자식 컴포넌트가 스크롤 이벤트를 발생시키고, 부모 컴포넌트에서 이벤트를 처리해야 하는 경우가 있다.
(ex. 자식 컴포넌트가 스크롤 이벤트를 발생시키고, 부모 컴포넌트에서 이벤트를 처리해야 하는 경우)
상태관리는 무조건 useState로만 하는 줄 알았는데 useRef로도 할 수 있다는 것을 알았다. 특히 해당 훅을 사용하여 객체를 변경해도 컴포넌트가 리렌더링이 안된다는 사실을 이제 알았다.(평소에 잘 안써봤다.)
활용할 수 있는 부분이 많지 않은 것 같으면서도 많을 것 같다는 생각을 했다.