fix(components): [popper-container] recreate container when unmounted (#7076)

This commit is contained in:
Yuyao Nie 2022-04-10 14:08:12 +08:00 committed by GitHub
parent 993971e872
commit 14b9b9f542
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,13 @@ export const POPPER_CONTAINER_ID = `el-popper-container-${generateId()}`
export const POPPER_CONTAINER_SELECTOR = `#${POPPER_CONTAINER_ID}`
const createContainer = () => {
const container = document.createElement('div')
container.id = POPPER_CONTAINER_ID
document.body.appendChild(container)
return container
}
export const usePopperContainer = () => {
onBeforeMount(() => {
if (!isClient) return
@ -15,11 +22,12 @@ export const usePopperContainer = () => {
// This is for bypassing the error that when under testing env, we often encounter
// document.body.innerHTML = '' situation
// for this we need to disable the caching since it's not really needed
if (process.env.NODE_ENV === 'test' || !cachedContainer) {
const container = document.createElement('div')
container.id = POPPER_CONTAINER_ID
document.body.appendChild(container)
cachedContainer = container
if (
process.env.NODE_ENV === 'test' ||
!cachedContainer ||
!document.body.querySelector(POPPER_CONTAINER_SELECTOR)
) {
cachedContainer = createContainer()
}
})
}