컴포넌트가 정보를 기억하지만 렌더링을 유발하지 않게 하고 싶다면 사용하는 Hook
import { useRef } from 'react';
const ref = useRef(0);
반환 객체
{
current: 0
}
ref.current 프로퍼티를 통해 ref의 current값에 접근할 수 있음.
| refs | state |
|---|---|
useRef(initialValue) 는 { current: initialValue } 을 반환합니다. | useState(initialValue) 은 state 변수의 현재 값과 setter 함수 [value, setValue] 를 반환합니다. |
| state를 바꿔도 리렌더 되지 않습니다. | state를 바꾸면 리렌더 됩니다. |
Mutable-렌더링 프로세스 외부에서 current 값을 수정 및 업데이트할 수 있습니다. | ”Immutable”—state 를 수정하기 위해서는 state 설정 함수를 반드시 사용하여 리렌더 대기열에 넣어야 합니다. |
렌더링 중에는 current 값을 읽거나 쓰면 안 됩니다. | 언제든지 state를 읽을 수 있습니다. 그러나 각 렌더마다 변경되지 않는 자체적인 state의 snapshot이 있습니다. |
렌더링이 필요한 상황에서는 state를 써야하고, 아니면 ref를 써야합니다.
일반적으로 컴포넌트가 React를 “외부”와 외부 API—컴포넌트의 형태에 영향을 미치지 않는 브라우저 API 와 통신해야 할 때 ref를 사용합니다. 다음은 몇 가지 특별한 상황입니다.
컴포넌트가 일부 값을 저장해야 하지만 렌더링 로직에 영향을 미치지 않는 경우, refs를 선택합니다.
current라는 프로퍼티를 호출할 수 있는 자바스크립트 순수객체입니다.useRef Hook을 호출해 ref를 달라고 React에 요청할 수 있습니다.current 값을 설정하면 리렌더가 트리거되지 않습니다.ref.current를 읽거나 쓰지 마세요. 컴포넌트를 예측하기 어렵게 만듭니다.