fix(watch): stop instance-bound watchers in post render queue

so that changes triggered in beforeUnmount get correct value in callback

fix #1525
This commit is contained in:
Evan You
2020-07-06 21:50:56 -04:00
parent 41db49dfb7
commit 58b07069ad
2 changed files with 10 additions and 12 deletions

View File

@@ -1996,17 +1996,19 @@ 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)