chore: warn when mounting different apps on the same host element (#5573)

This commit is contained in:
zs 2022-05-13 09:09:18 +08:00 committed by GitHub
parent f2c48f5352
commit 0c07f12541
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

View File

@ -30,6 +30,11 @@ describe('api: createApp', () => {
const root1 = nodeOps.createElement('div')
createApp(Comp).mount(root1)
expect(serializeInner(root1)).toBe(`0`)
//#5571 mount multiple apps to the same host element
createApp(Comp).mount(root1)
expect(
`There is already an app instance mounted on the host container`
).toHaveBeenWarned()
// mount with props
const root2 = nodeOps.createElement('div')

View File

@ -284,6 +284,14 @@ export function createAppAPI<HostElement>(
isSVG?: boolean
): any {
if (!isMounted) {
// #5571
if (__DEV__ && (rootContainer as any).__vue_app__) {
warn(
`There is already an app instance mounted on the host container.\n` +
` If you want to mount another app on the same host container,` +
` you need to unmount the previous app by calling \`app.unmount()\` first.`
)
}
const vnode = createVNode(
rootComponent as ConcreteComponent,
rootProps