linkmore-design
Version:
🌈 🚀lm组件库。🚀
57 lines (54 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
var _react = require("react");
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? _react.useLayoutEffect : _react.useEffect;
/** 调整列数量 */
const useResize = ({
resizeRef,
refreshDelay
}) => {
const [resize, setResize] = (0, _react.useState)({
width: 1400,
height: 800
});
const changeResize = (0, _react.useCallback)(size => {
setResize(o => ({
...o,
...size
}));
}, []);
/** 延迟调整 */
const delayedResize = (0, _react.useCallback)((0, _lodash.throttle)(({
width,
height
}) => changeResize({
width,
height
}), refreshDelay), [changeResize, refreshDelay]);
// 获取表格高度
useIsomorphicLayoutEffect(() => {
// 频繁变动可考虑增加防抖
const resizeObserver = new ResizeObserver(entries => {
const {
blockSize,
inlineSize
} = entries[0].borderBoxSize[0];
delayedResize({
width: inlineSize,
height: blockSize
});
});
const parentNode = resizeRef.current?.parentNode;
if (parentNode) {
resizeObserver.observe(parentNode);
}
return () => resizeObserver.disconnect();
}, [delayedResize]);
return resize;
};
var _default = useResize;
exports.default = _default;