// kept-alive
activateComponentInstance(vnode, container, endNode)
} else {
- queueJob(() => {
+ if (__COMPAT__) {
mountComponentInstance(vnode, container, isSVG, endNode)
- }, flushHooks)
+ } else {
+ queueJob(() => {
+ mountComponentInstance(vnode, container, isSVG, endNode)
+ }, flushHooks)
+ }
}
}
queueJob(handle.runner)
})
- // we are using vnode.ref to store the functional component's update job
- queueJob(() => {
+ const doMount = () => {
handle.runner = autorun(
() => {
if (handle.prevTree) {
const nextTree = (handle.prevTree = current.children = renderFunctionalRoot(
current
))
+ queuePostCommitHook(() => {
+ current.el = nextTree.el
+ })
patch(
prevTree as MountedVNode,
nextTree,
current as MountedVNode,
isSVG
)
- current.el = nextTree.el
if (__DEV__) {
popWarningContext()
}
const subTree = (handle.prevTree = vnode.children = renderFunctionalRoot(
vnode
))
+ queuePostCommitHook(() => {
+ vnode.el = subTree.el as RenderNode
+ })
mount(subTree, container, vnode as MountedVNode, isSVG, endNode)
- vnode.el = subTree.el as RenderNode
if (__DEV__) {
popWarningContext()
}
scheduler: queueUpdate
}
)
- })
+ }
+
+ // we are using vnode.ref to store the functional component's update job
+ if (__COMPAT__) {
+ doMount()
+ } else {
+ queueJob(doMount)
+ }
}
function mountText(
queuePostCommitHook(() => {
vnode.el = instance.$vnode.el
+ if (__COMPAT__) {
+ // expose __vue__ for devtools
+ ;(vnode.el as any).__vue__ = instance
+ }
if (vnode.ref) {
vnode.ref($proxy)
}
endNode
)
- if (__COMPAT__) {
- // expose __vue__ for devtools
- ;(vnode.el as any).__vue__ = instance
- }
-
instance._mounted = true
}
},
container.vnode = null
}
}
- return nextTick(() => {
+ if (__COMPAT__) {
+ flushHooks()
return vnode && vnode.flags & VNodeFlags.COMPONENT_STATEFUL
? (vnode.children as ComponentInstance).$proxy
: null
- })
+ } else {
+ return nextTick(() => {
+ return vnode && vnode.flags & VNodeFlags.COMPONENT_STATEFUL
+ ? (vnode.children as ComponentInstance).$proxy
+ : null
+ })
+ }
}
return { render }