React 애플리케이션에서 컴포넌트 크기에 따라 동적으로 UI를 변경하고 싶을 때, Resize Observer API가 매우 유용합니다. 이번 글에서는 Resize Observer API를 활용하여 반응형 컴포넌트를 만드는 방법을 자세히 설명합니다.
1. Resize Observer API란?
Resize Observer API는 요소의 크기 변화를 감지할 수 있는 브라우저 내장 API입니다. 기존 윈도우 사이즈나 CSS 미디어 쿼리만으로는 어려운, 특정 컴포넌트 크기에 따른 세밀한 반응형 처리가 가능합니다.
2. React에서 Resize Observer 사용하기
React에서는 useEffect와 useState를 조합하여 Resize Observer를 쉽게 사용할 수 있습니다. 요소에 ref를 걸고, ref를 통해 크기 변화를 구독하는 방식입니다.
3. 예제 코드
import React, { useState, useEffect, useRef } from 'react';
function ResponsiveBox() {
const boxRef = useRef(null);
const [size, setSize] = useState({ width: 0, height: 0 });
useEffect(() => {
if (!boxRef.current) return;
const observeTarget = boxRef.current;
const resizeObserver = new ResizeObserver(entries => {
for (let entry of entries) {
const { width, height } = entry.contentRect;
setSize({ width, height });
}
});
resizeObserver.observe(observeTarget);
// Cleanup
return () => { resizeObserver.unobserve(observeTarget); };
}, []);
return (
<p>Width: {Math.round(size.width)}px</p>
);
}
export default ResponsiveBox;
4. 설명
위 예제에서 boxRef는 관찰 대상 div 요소를 참조합니다. ResizeObserver는 이 요소의 크기 변화를 감지하며, 변경될 때마다 상태를 업데이트하여 배경색을 변경합니다. 크기가 300px 초과시 녹색, 미만일 때는 빨간색으로 표시합니다.
5. 활용 팁
- 다양한 스타일, 글자 크기, 레이아웃 변경에 활용 가능
- 서드파티 UI 라이브러리와 같이 크기 측정이 필요한 컴포넌트에 응용
- 성능을 고려해 필요 시 옵저버 해제를 철저히 처리
이처럼 React와 Resize Observer API를 활용하면 더 다양한 상황에서 세밀한 반응형 UI 구현이 가능합니다.
'React' 카테고리의 다른 글
| React에서 Canvas 기반 이미지 크롭 편집기 구현하기 (0) | 2026.07.24 |
|---|---|
| React 앱에서 Electron 연동하여 데스크톱 애플리케이션 개발하기 (0) | 2026.07.23 |
| React 앱에서 Undo/Redo 상태 히스토리 기능 구현하기 (0) | 2026.07.22 |
| React에서 react-hook-form으로 대규모 폼 최적화하기 (0) | 2026.07.22 |
| React 앱에서 Command Palette 인터페이스 구현하기 (1) | 2026.07.21 |