@schema-render/search-react
Version:
Conditional search component based on FormRender.
40 lines (39 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, /**
* 容器元素窗口尺寸变化 hooks
*/ "default", {
enumerable: true,
get: function() {
return useResize;
}
});
var _corereact = require("@schema-render/core-react");
var _react = require("react");
function useResize(formRenderRef, fn) {
var fnRef = (0, _corereact.useLatest)(fn);
// 设置 -1,保证第一次 ResizeObserver 会执行
var prevWidth = (0, _react.useRef)(-1);
(0, _react.useEffect)(function() {
var _formRenderRef_current;
var element = (_formRenderRef_current = formRenderRef.current) === null || _formRenderRef_current === void 0 ? void 0 : _formRenderRef_current.getRootElement();
if (!element) {
return;
}
var resizeObserver = new ResizeObserver(function(entries) {
var width = entries[0].contentRect.width;
// 只有元素宽度变化才触发回调
if (prevWidth.current !== width) {
prevWidth.current = width;
fnRef.current(element);
}
});
resizeObserver.observe(element);
return function() {
return resizeObserver.disconnect();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}