fix(suspense): should discard unmount effects of invalidated pending branch

This commit is contained in:
Evan You 2020-09-17 23:49:06 -04:00
parent 49bb44756f
commit 5bfcad155b
2 changed files with 4 additions and 3 deletions

View File

@ -380,8 +380,8 @@ describe('Suspense', () => {
await Promise.all(deps)
await nextTick()
expect(serializeInner(root)).toBe(`<!---->`)
// should discard effects (except for unmount)
expect(calls).toEqual(['unmounted'])
// should discard effects
expect(calls).toEqual([])
})
test('unmount suspense after resolve', async () => {

View File

@ -201,11 +201,12 @@ function patchSuspense(
suspense.isHydrating = false
suspense.activeBranch = pendingBranch
} else {
unmount(pendingBranch, parentComponent, null)
unmount(pendingBranch, parentComponent, suspense)
}
// increment pending ID. this is used to invalidate async callbacks
// reset suspense state
suspense.deps = 0
// discard effects from pending branch
suspense.effects.length = 0
// discard previous container
suspense.hiddenContainer = createElement('div')