UNPKG

@alicloud/console-base-rc-pagination

Version:
32 lines (31 loc) 1.06 kB
import { useMemo, useEffect } from 'react'; import useModelState from './_use-model-state'; import useDispatchSetWidth from './use-dispatch-set-width'; /** * 在 full 的时候,容易因宽度变化导致 UI 发生错乱,监听大小变化,必要的时候强行改 theme */ export default function useEffectResizeObserver() { var _useModelState = useModelState(), domUi = _useModelState.domUi; var dispatchSetWidth = useDispatchSetWidth(); var resizeObserver = useMemo(function () { // https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver if (typeof ResizeObserver !== 'function' || !domUi) { return null; } return new ResizeObserver(function () { return dispatchSetWidth(domUi.getBoundingClientRect().width); }); }, [domUi, dispatchSetWidth]); useEffect(function () { if (!domUi) { return; } if (resizeObserver) { resizeObserver.observe(domUi); return function () { return resizeObserver.unobserve(domUi); }; } }, [domUi, resizeObserver]); }