fix(runtime-core): fix activated hook when using async component with KeepAlive (#5459)

fix #5095
fix #5651
This commit is contained in:
edison
2022-05-12 08:19:11 +08:00
committed by GitHub
parent d4fcfddec6
commit f1d1cdbb69
2 changed files with 43 additions and 3 deletions

View File

@@ -6,7 +6,7 @@ import {
isInSSRComponentSetup,
ComponentOptions
} from './component'
import { isFunction, isObject } from '@vue/shared'
import { isFunction, isObject, ShapeFlags } from '@vue/shared'
import { ComponentPublicInstance } from './componentPublicInstance'
import { createVNode, VNode } from './vnode'
import { defineComponent } from './apiDefineComponent'
@@ -211,10 +211,14 @@ export function defineAsyncComponent<
function createInnerComp(
comp: ConcreteComponent,
{ vnode: { ref, props, children } }: ComponentInternalInstance
{ vnode: { ref, props, children }, parent }: ComponentInternalInstance
) {
const vnode = createVNode(comp, props, children)
// ensure inner component inherits the async wrapper's ref owner
vnode.ref = ref
if (parent && isKeepAlive(parent.vnode)) {
vnode.shapeFlag |= ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
}
return vnode
}