fix(transition-group): run `forceReflow` on the correct document (fix #13849) (#13853)

close #13849
This commit is contained in:
Tobias Messner 2025-09-25 02:42:52 +02:00 committed by GitHub
parent d44a5a98c8
commit 1be5ddfe87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 5 deletions

View File

@ -260,11 +260,11 @@ export function resolveTransitionProps(
// the css will not get the final state (#10677)
if (!el._enterCancelled) {
// force reflow so *-leave-from classes immediately take effect (#2593)
forceReflow()
forceReflow(el)
addTransitionClass(el, leaveActiveClass)
} else {
addTransitionClass(el, leaveActiveClass)
forceReflow()
forceReflow(el)
}
nextFrame(() => {
if (!el._isLeaving) {
@ -476,6 +476,7 @@ function toMs(s: string): number {
}
// synchronously force layout to put elements into a certain state
export function forceReflow(): number {
return document.body.offsetHeight
export function forceReflow(el?: Node): number {
const targetDocument = el ? el.ownerDocument! : document
return targetDocument.body.offsetHeight
}

View File

@ -92,7 +92,7 @@ const TransitionGroupImpl: ComponentOptions = /*@__PURE__*/ decorate({
const movedChildren = prevChildren.filter(applyTranslation)
// force reflow to put everything in position
forceReflow()
forceReflow(instance.vnode.el as Node)
movedChildren.forEach(c => {
const el = c.el as ElementWithTransition