useRef
useRef
는 .current
프로퍼티로 전달된 인자(initialValue)로, 초기화된 변경 가능한 ref
객체를 반환.useRef()
는 순수 자바스크립트 객체를 생성 {current: ...}
ref
객체를 제공..current
프로퍼티를 변형하는 것이 리렌더링을 발생시키지는 않는다.useRef
는ref
객체를 만들어 내는 hook
이며ref
는 render
메서드에서 생성된 DOM node나 React Element에 접근할 수 있도록 한다.ref
는 변경 가능한 값을 담고 있는 객체이고ref
객체 안의 값은 React의 생명주기에서 독립적이기 때문에re-render
와 상관없이 값이 유지된다render
되지 않고, render
되더라도 값이 유지되는 특징을 가진다useRef
사용 사례1) 특정 DOM에 접근해야 할 때
2) 다시 렌더링 되어도 동일한 참조값을 유지할 때
3) setInterval, setTimeout clear 할 때 등
2) 다시 렌더링 되어도 동일한 참조값을 유지할 때
ref
안의 값은 0
이 유지import React, { useEffect, useState, useRef } from 'react';
const Example = () =>{
const [count, setCount] = useState(0);
const countRef = useRef(count);
useEffect(() => {
countRef.current = count;
},[count]) // (1) 첫 번째 useEffect
useEffect(() => {
return () => {
console.log("unmount 시 출력", countRef.current);
};
}, []); // (2) 두 번째 useEffect
return (
<>
<h1>{count}</h1>
<button onClick={()=>setCount(c=>c+1)}>+<button/>
</>
}
!! 참고 자료