useRef()
는 React 함수형 컴포넌트에서 DOM 요소에 접근하거나, 다른 목적으로 컴포넌트 내에서 변수를 유지하는 데 사용되는 Hook입니다.
React 18에서는 useRef()
를 사용하여 컴포넌트 내부에서 mutable한 값, 즉 변경 가능한 값을 관리할 수 있습니다. 이전에는 클래스 컴포넌트에서 this.state
나 this.instanceVariable
과 같은 mutable한 값들을 관리했지만, 이제 함수형 컴포넌트에서도 useRef()
를 사용하여 이를 처리할 수 있습니다.
useRef()
는 함수형 컴포넌트에서 클래스 컴포넌트의 인스턴스 변수와 유사한 역할을 합니다. 그러나 인스턴스 변수와 달리 useRef()
를 사용하여 관리하는 변수의 변경은 컴포넌트 렌더링을 다시 하지 않습니다.
useRef()
는 보통 DOM 요소에 접근하기 위해 사용됩니다. 예를 들어, 다음과 같이 useRef()
를 사용하여 <input>
요소에 접근할 수 있습니다.
import { useRef } from 'react';
function MyComponent() {
const inputRef = useRef(null);
function handleClick() {
inputRef.current.focus();
}
return (
<div>
<input type="text" ref={inputRef} />
<button onClick={handleClick}>Focus the input</button>
</div>
);
}
이 코드에서는 inputRef
라는 변수를 선언하고, 이를 <input>
요소의 ref
prop에 할당합니다. useRef()
의 초기값은 null
로 설정됩니다. 그 다음으로, handleClick()
함수에서는 inputRef.current
를 사용하여 <input>
요소에 접근하고, focus()
메서드를 호출하여 해당 요소에 포커스를 설정합니다.
또한 useRef()
를 사용하여 컴포넌트 내에서 변수를 유지할 수도 있습니다. 이를 통해 컴포넌트 렌더링 간에 상태를 유지하거나, 이전 값과 현재 값을 비교하고, 다른 목적으로 사용할 수 있습니다. 예를 들어, 다음과 같이 useRef()
를 사용하여 컴포넌트의 이전 상태를 저장할 수 있습니다.
import { useRef, useEffect } from 'react';
function MyComponent({ value }) {
const prevValueRef = useRef(null);
useEffect(() => {
prevValueRef.current = value;
}, [value]);
const prevValue = prevValueRef.current;
return (
<div>
<p>Current value: {value}</p>
<p>Previous value: {prevValue}</p>
</div>
);
}
죄송합니다. 앞 부분을 놓쳐서 다시 적겠습니다.
useRef()
를 사용하여 prevValueRef
변수를 만들고, 이 변수를 사용하여 value
의 변경을 감시합니다. useEffect()
는 value
가 변경될 때마다 호출됩니다. useEffect()
의 콜백 함수에서는 prevValueRef.current
를 사용하여 이전 값을 value
로 업데이트합니다. 마지막으로, prevValue
변수를 사용하여 이전 값을 렌더링합니다.
useRef()
를 사용하여 컴포넌트에서 변수를 관리하는 방법은 무궁무진합니다. 예를 들어, useRef()
를 사용하여 컴포넌트 내부의 특정 값을 추적하거나, 다른 컴포넌트나 모듈에서 공유할 수 있는 값을 저장하는 등 다양한 방법으로 활용할 수 있습니다.
사용시 주의점
하지만 주의해야 할 점도 있습니다. useRef()
를 사용하여 상태를 관리하면, 해당 상태가 변경되었을 때 컴포넌트의 렌더링이 다시 발생하지 않습니다. 이는 렌더링 간에 변수 값이 변경되어도, 화면에 반영되지 않을 수 있다는 것을 의미합니다. 때문에, 변경되는 값을 렌더링에 반영하고 싶다면, 상태(State)나 prop을 사용하는 것이 좋습니다.
이상으로 useRef()
에 대한 설명을 마칩니다. useRef()
는 React Hooks 중 하나로, 함수형 컴포넌트에서 DOM 요소에 접근하거나, 다른 목적으로 컴포넌트 내에서 변수를 유지하는 데 사용됩니다. useRef()
를 사용하여 컴포넌트 내부에서 mutable한 값을 관리할 수 있으며, 컴포넌트 렌더링 간에 상태를 유지할 수도 있습니다. 단, 이전 값과 현재 값을 비교하거나, 다른 목적으로 사용할 수 있습니다.
내저장소 바로가기 luxury515
'Front-end > React.js' 카테고리의 다른 글
React Hook : useLayoutEffect() (0) | 2023.04.15 |
---|---|
React Hook : useImperativeHandle() (0) | 2023.04.15 |
React Hook : useMemo() (0) | 2023.04.15 |
React Hook : useCallback() (0) | 2023.04.15 |
React Hook : useReducer() (0) | 2023.04.15 |