728x90
728x90
실시간으로 특정 요소의 길이값 가져오기
들어가며
- 리액트애서 실시간으로 특정 요소의 길이값을 가져오는 방법을 알아보자.
방법
- 우선 @useRef@를 이용하여 실시간으로 길이값을 가져올 요소를 지정해준다.
import {useRef} from 'react';
// ...
const horiRef = useRef(null);
// ...
return (
<S.Container ref={horiRef}>
{/* ... */}
</S.Container>
);
- 다음과 같이 @useEffect@와 @ResizeObserver@를 이용하여 해당 요소의 사이즈값을 실시간으로 가져올 수 있다.
import { useEffect } from 'react';
useEffect(() => {
const resizeObserver = new ResizeObserver((entries) => {
for (let entry of entries) {
if (entry.contentBoxSize) {
const width = entry.contentBoxSize[0]?.inlineSize;
setItemContainerSize(width);
} else {
const width = entry.contentRect.width;
setItemContainerSize(width);
}
}
});
const containerElement = horiRef.current;
if (containerElement) {
resizeObserver.observe(containerElement);
}
return () => {
resizeObserver.disconnect();
};
}, [horiRef]);
Reference
728x90
728x90
'Programming > React' 카테고리의 다른 글
[React.js] map 함수를 사용할 때 중괄호({})와 소괄호(()) (0) | 2024.05.29 |
---|---|
[React.js] 토스트 메시지 띄우기 간단 예제 (ReactDOM.createPortal) (0) | 2024.05.21 |
[React.js] useImperativeHandle과 forwardRef (0) | 2024.05.21 |
[React.js] 부모 컴포넌트에서 자식 컴포넌트로 요소 넘기는 방법 (0) | 2024.05.14 |
[React.js] state와 ref 비교하기 (0) | 2024.03.02 |
[React.js] 마우스 호버 효과를 적용하기 위한 커스텀 훅 만들기 (useHover.js) (0) | 2024.02.20 |
[React.js] Node.js 설치부터 리액트 프로젝트 테스트까지 정리 (0) | 2024.02.05 |
[React.js] 클래스 컴포넌트(Class Components)와 함수형 컴포넌트(Functional Components) (0) | 2023.12.14 |