fix(runtime-core): stricter compat root mount check
This commit is contained in:
parent
669037277b
commit
32e21333dd
@ -298,14 +298,12 @@ describe('renderer: component', () => {
|
||||
})
|
||||
|
||||
test('the component VNode should be cloned when reusing it', () => {
|
||||
const Child = {
|
||||
setup(props: any, { slots }: SetupContext) {
|
||||
return () => {
|
||||
const c = slots.default!()
|
||||
const App = {
|
||||
render() {
|
||||
const c = [h(Comp)]
|
||||
return [c, c, c]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const ids: number[] = []
|
||||
const Comp = {
|
||||
@ -315,14 +313,6 @@ describe('renderer: component', () => {
|
||||
}
|
||||
}
|
||||
|
||||
const App = {
|
||||
setup() {
|
||||
return () => {
|
||||
return h(Child, () => [h(Comp)])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(App), root)
|
||||
expect(serializeInner(root)).toBe(`<h1></h1><h1></h1><h1></h1>`)
|
||||
|
@ -472,6 +472,7 @@ function installCompatMount(
|
||||
}
|
||||
setupComponent(instance)
|
||||
vnode.component = instance
|
||||
vnode.isCompatRoot = true
|
||||
|
||||
// $mount & $destroy
|
||||
// these are defined on ctx and picked up by the $mount/$destroy
|
||||
|
@ -1301,7 +1301,8 @@ function baseCreateRenderer(
|
||||
) => {
|
||||
// 2.x compat may pre-creaate the component instance before actually
|
||||
// mounting
|
||||
const compatMountInstance = __COMPAT__ && initialVNode.component
|
||||
const compatMountInstance =
|
||||
__COMPAT__ && initialVNode.isCompatRoot && initialVNode.component
|
||||
const instance: ComponentInternalInstance =
|
||||
compatMountInstance ||
|
||||
(initialVNode.component = createComponentInstance(
|
||||
|
@ -136,6 +136,11 @@ export interface VNode<
|
||||
*/
|
||||
[ReactiveFlags.SKIP]: true
|
||||
|
||||
/**
|
||||
* @internal __COMPAT__ only
|
||||
*/
|
||||
isCompatRoot?: true
|
||||
|
||||
type: VNodeTypes
|
||||
props: (VNodeProps & ExtraProps) | null
|
||||
key: string | number | null
|
||||
|
Loading…
Reference in New Issue
Block a user