typescript useRef의 타입
antd+typescript+react를 사용하던 중 ref의 세 가지 타입에 대해 알게되어 포스팅한다.
react의 useRef는 세 가지 타입이 오버로딩 되어있다.
useRef
useRef
는 initialValue를 useRef 객체의 current
에 저장한다.
이 useRef의 current
가 변경되어도 컴포넌트는 리렌더링 되지 않는다.
때문에 DOM 내부 객체를 직접 가리키거나 렌더링과 상관없는 변수를 저장하는데에 사용된다.
useRef의 타입
MutableRefObject<T>
1 | function useRef<T>(initialValue: T): MutableRefObject<T>; |
initialValue의 타입과 제네릭의 타입이 T인경우 MutableRefObject<T>
를 반환한다.
렌더링과 관련없는 값을 저장하는데에 사용하자.
RefObject<T>
1 | function useRef<T>(initialValue: T | null): RefObject<T>; |
제네릭의 타입이 T이고 initialValue의 타입이 T 혹은 null인 경우 RefObject<T>
를 반환한다.RefObject<T>
는 readonly로 current를 직접 수정할 수 없다.
하지만 current의 하위 프로퍼티는 조작 가능하다.
그렇기에 DOM 을 조작하기 위해 사용하자.
MutableRefObject<T|undefined>
1 | function useRef<T = undefined>(): MutableRefObject<T | undefined>; |