diff --git a/src/components/Modal/src/components/ModalWrapper.vue b/src/components/Modal/src/components/ModalWrapper.vue index 0b8b728..2e3125a 100644 --- a/src/components/Modal/src/components/ModalWrapper.vue +++ b/src/components/Modal/src/components/ModalWrapper.vue @@ -45,16 +45,36 @@ useWindowSizeFn(setModalHeight.bind(null, false)); - useMutationObserver( - spinRef, - () => { - setModalHeight(); - }, - { - attributes: true, - subtree: true, - } - ); + // update-begin--author:liaozhiyang---date:2024-04-18---for:【QQYUN-9035】basicModal不设置maxHeight或height会一直执行setModalHeight,需即使销毁MutationObserver + let observer, + recordCount: any = {}; + if (!(props.maxHeight || props.height)) { + observer = useMutationObserver( + spinRef, + () => { + setModalHeight({ + source: 'muob', + callBack: (height) => { + const count = recordCount[height]; + if (count) { + recordCount[height] = ++recordCount[height]; + if (count > 5) { + observer.stop(); + recordCount = null; + } + } else { + recordCount[height] = 1; + } + }, + }); + }, + { + attributes: true, + subtree: true, + } + ); + } + // update-end--author:liaozhiyang---date:2024-04-18---for:【QQYUN-9035】basicModal不设置maxHeight或height会一直执行setModalHeight,需即使销毁MutationObserver createModalContext({ redoModalHeight: setModalHeight, @@ -124,7 +144,11 @@ }); } - async function setModalHeight() { + async function setModalHeight(option?) { + console.log("---------性能监控--------setModalHeight----------") + const options = option || {}; + const source = options.source; + const callBack = options.callBack; // 解决在弹窗关闭的时候监听还存在,导致再次打开弹窗没有高度 // 加上这个,就必须在使用的时候传递父级的visible if (!props.visible) return; @@ -163,6 +187,12 @@ } else { realHeightRef.value = props.height ? props.height : realHeight > maxHeight ? maxHeight : realHeight; } + // update-begin--author:liaozhiyang---date:2024-04-18---for:【QQYUN-9035】basicModal不设置maxHeight或height会一直执行setModalHeight,需即使销毁MutationObserver + if (source == 'muob') { + callBack(realHeightRef.value); + } + // update-end--author:liaozhiyang---date:2024-04-18---for:【QQYUN-9035】basicModal不设置maxHeight或height会一直执行setModalHeight,需即使销毁MutationObserver + emit('height-change', unref(realHeightRef)); } catch (error) { console.log(error);