diff --git a/components/_util/Portal.tsx b/components/_util/Portal.tsx index 7b4f682b27..caba27b22f 100644 --- a/components/_util/Portal.tsx +++ b/components/_util/Portal.tsx @@ -23,14 +23,24 @@ export default defineComponent({ // getContainer 不会改变,不用响应式 let container: HTMLElement; const { shouldRender } = useInjectPortal(); + + function setContainer() { + if (shouldRender.value) { + container = props.getContainer(); + } + } + onBeforeMount(() => { isSSR = false; + // drawer + setContainer(); }); onMounted(() => { - if (shouldRender.value) { - container = props.getContainer(); - } + if (container) return; + // https://github.com/vueComponent/ant-design-vue/issues/6937 + setContainer(); }); + const stopWatch = watch(shouldRender, () => { if (shouldRender.value && !container) { container = props.getContainer(); diff --git a/components/message/useMessage.tsx b/components/message/useMessage.tsx index b81a07b3b2..3045826108 100644 --- a/components/message/useMessage.tsx +++ b/components/message/useMessage.tsx @@ -91,8 +91,7 @@ const Holder = defineComponent({ closable: false, closeIcon: mergedCloseIcon, duration: props.duration ?? DEFAULT_DURATION, - getContainer: () => - props.staticGetContainer?.() || getPopupContainer.value?.() || document.body, + getContainer: props.staticGetContainer ?? getPopupContainer.value, maxCount: props.maxCount, onAllRemoved: props.onAllRemoved, });