
[javascript] ResizeObserver vs resize event
[react][event][resize][Dimensions] Resize event listener using React hooks
Why do we need to use ResizeObserver?
window는 resize event를 사용해 resize를 할 수 있다
window.addEventListener("resize", function() {
  // window resize시 처리
})DOM은 window처럼 resize 이벤트를 사용해 size 변화를 감지할 수 없다.
ResizeObserver를 사용한 react hook을 만들어 보자
import { useEffect, useState, useRef } from 'react';
type ResizeObserverCallback = (entry: ResizeObserverEntry) => void;
export const useResizeObserver = ($dom: HTMLElement | null | undefined, callback) => {
  const [rect, setRect] = useState({ height: 0, width: 0 });
  const observerRef = useRef<ResizeObserver | null>(null);
  useEffect(() => {
      // create on mount
    observerRef.current = new ResizeObserver((entries) => {
      for (const entry of entries) {
        setRect(entry.contentRect);
        callback && callback(entry);
      }
    });
    return () => observerRef.current?.disconnect(); // release on unmount
  }, []);
  useEffect(() => {
    if (!$dom) return;
    if (!observerRef.current) return;
    observerRef.current.observe($dom);
    return () => observerRef.current?.unobserve($dom);
  }, [$dom]);
  return { height: rect.height, width: rect.width };
};'✘✘✘ Javascript' 카테고리의 다른 글
| [Basic] Javascript sync/async, blocking/non-blocking (0) | 2023.05.17 | 
|---|---|
| [javascript] replace with Regex, $n vs $& (0) | 2023.05.09 | 
| [axios] Query params 자동 인코딩 Query string > params are encoded automatically (0) | 2023.04.10 | 
| Javascript Falsy values 값들 (0) | 2023.04.09 | 
| [event] window.matchMedia - mobile detecting: 모바일 확인 하기 + React Hook (0) | 2023.04.06 | 
 
										
									 
										
									
댓글