fix(watch): post flush watchers should not fire when component is unmounted

fix #1603
This commit is contained in:
Evan You
2020-07-17 11:17:29 -04:00
parent 024a8f10f5
commit 341b30c961
4 changed files with 100 additions and 39 deletions

View File

@@ -2025,19 +2025,17 @@ function baseCreateRenderer(
if (bum) {
invokeArrayFns(bum)
}
if (effects) {
for (let i = 0; i < effects.length; i++) {
stop(effects[i])
}
}
// update may be null if a component is unmounted before its async
// setup has resolved.
if (update) {
stop(update)
unmount(subTree, instance, parentSuspense, doRemove)
}
if (effects) {
queuePostRenderEffect(() => {
for (let i = 0; i < effects.length; i++) {
stop(effects[i])
}
}, parentSuspense)
}
// unmounted hook
if (um) {
queuePostRenderEffect(um, parentSuspense)