/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/preact/hooks/useResizeObserver.ts
29 строк
707 B
Scott Rippey
✨ [Bento] Implemented bento-pan-zoom component (#37863)
19 апр 2022, 17:29
Не верифицирован
19 апр 2022, 17:29
fb56d5a
Код
Авторство
О чём код?
import type {RefObject} from 'preact'; import {useEffect} from '#preact'; import {useValueRef} from '#preact/component'; /** * Callback is called on initial render, * and again whenever the element's size changes. */ export function useResizeObserver( elementRef: RefObject<HTMLElement>, callback: (entry: ResizeObserverEntry) => void ) { const callbackRef = useValueRef(callback); useEffect(() => { const el = elementRef.current; if (!el) { return; } const ro = new ResizeObserver((entries) => { callbackRef.current(entries[0]); }); ro.observe(el); return () => { ro.unobserve(el); ro.disconnect(); }; }, [elementRef, callbackRef]); }