parent
108474e2bb
commit
2f07e3460b
@ -399,7 +399,7 @@ function applySingletonAppMutations(app: App) {
|
|||||||
}
|
}
|
||||||
const val = singletonApp.config[key as keyof AppConfig]
|
const val = singletonApp.config[key as keyof AppConfig]
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
app.config[key] = val
|
app.config[key] = isObject(val) ? Object.create(val) : val
|
||||||
|
|
||||||
// compat for runtime ignoredElements -> isCustomElement
|
// compat for runtime ignoredElements -> isCustomElement
|
||||||
if (
|
if (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import Vue from '@vue/compat'
|
import Vue from '@vue/compat'
|
||||||
import { effect, isReactive } from '@vue/reactivity'
|
import { effect, isReactive } from '@vue/reactivity'
|
||||||
import { nextTick } from '@vue/runtime-core'
|
import { h, nextTick } from '@vue/runtime-core'
|
||||||
import {
|
import {
|
||||||
DeprecationTypes,
|
DeprecationTypes,
|
||||||
deprecationData,
|
deprecationData,
|
||||||
@ -454,19 +454,51 @@ test('post-facto global asset registration should affect apps created via create
|
|||||||
template: '<foo/>'
|
template: '<foo/>'
|
||||||
})
|
})
|
||||||
Vue.component('foo', { template: 'foo' })
|
Vue.component('foo', { template: 'foo' })
|
||||||
const vm = app.mount(document.createElement('div')) as any;
|
const vm = app.mount(document.createElement('div')) as any
|
||||||
expect(vm.$el.textContent).toBe('foo')
|
expect(vm.$el.textContent).toBe('foo')
|
||||||
delete singletonApp._context.components.foo
|
delete singletonApp._context.components.foo
|
||||||
})
|
})
|
||||||
|
|
||||||
test('local asset registration should not affect other local apps', () => {
|
test('local asset registration should not affect other local apps', () => {
|
||||||
const app1 = createApp({});
|
const app1 = createApp({})
|
||||||
const app2 = createApp({});
|
const app2 = createApp({})
|
||||||
|
|
||||||
app1.component('foo', {});
|
app1.component('foo', {})
|
||||||
app2.component('foo', {});
|
app2.component('foo', {})
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
`Component "foo" has already been registered in target app`
|
`Component "foo" has already been registered in target app`
|
||||||
).not.toHaveBeenWarned()
|
).not.toHaveBeenWarned()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('local app-level mixin registration should not affect other local apps', () => {
|
||||||
|
const app1 = createApp({ render: () => h('div') })
|
||||||
|
const app2 = createApp({})
|
||||||
|
|
||||||
|
const mixin = { created: jest.fn() }
|
||||||
|
app1.mixin(mixin)
|
||||||
|
app2.mixin(mixin)
|
||||||
|
|
||||||
|
expect(`Mixin has already been applied`).not.toHaveBeenWarned()
|
||||||
|
|
||||||
|
app1.mount(document.createElement('div'))
|
||||||
|
expect(mixin.created).toHaveBeenCalledTimes(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
// #5699
|
||||||
|
test('local app config should not affect other local apps in v3 mode', () => {
|
||||||
|
Vue.configureCompat({ MODE: 3 })
|
||||||
|
const app1 = createApp({
|
||||||
|
render: () => h('div'),
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
test: 123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
app1.config.globalProperties.test = () => {}
|
||||||
|
app1.mount(document.createElement('div'))
|
||||||
|
|
||||||
|
const app2 = createApp({})
|
||||||
|
expect(app2.config.globalProperties.test).toBe(undefined)
|
||||||
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user