refactor(runtime-core/scheduler): dedicated preFlush queue

properly fix #1763, #1777, #1781
This commit is contained in:
Evan You
2020-08-05 10:55:23 -04:00
parent 74a1265fea
commit 3692f2738f
4 changed files with 212 additions and 64 deletions

View File

@@ -41,7 +41,7 @@ import {
queuePostFlushCb,
flushPostFlushCbs,
invalidateJob,
runPreflushJobs
flushPreFlushCbs
} from './scheduler'
import { effect, stop, ReactiveEffectOptions, isRef } from '@vue/reactivity'
import { updateProps } from './componentProps'
@@ -1430,7 +1430,10 @@ function baseCreateRenderer(
instance.next = null
updateProps(instance, nextVNode.props, prevProps, optimized)
updateSlots(instance, nextVNode.children)
runPreflushJobs(instance.update)
// props update may have triggered pre-flush watchers.
// flush them before the render update.
flushPreFlushCbs(undefined, instance.update)
}
const patchChildren: PatchChildrenFn = (