UNPKG

@schema-render/search-react

Version:

Conditional search component based on FormRender.

40 lines (39 loc) 1.36 kB
"use strict"; 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 }, []); }