diff --git a/packages/runtime-vapor/__tests__/directives/vCloak.spec.ts b/packages/runtime-vapor/__tests__/directives/vCloak.spec.ts new file mode 100644 index 00000000000..e69c5eadae6 --- /dev/null +++ b/packages/runtime-vapor/__tests__/directives/vCloak.spec.ts @@ -0,0 +1,17 @@ +import { createVaporApp, template } from '../../src' + +describe('vCloak', () => { + test('should be removed after mount', () => { + const root = document.createElement('div') + root.setAttribute('v-cloak', '') + createVaporApp({ + setup() { + expect(root.hasAttribute('v-cloak')).toBe(true) + expect(root.hasAttribute('data-v-app')).toBe(false) + return template(`
`)() + }, + }).mount(root) + expect(root.hasAttribute('v-cloak')).toBe(false) + expect(root.hasAttribute('data-v-app')).toBe(true) + }) +}) diff --git a/packages/runtime-vapor/src/apiCreateApp.ts b/packages/runtime-vapor/src/apiCreateApp.ts index 89fc6179ee0..37e77e8831e 100644 --- a/packages/runtime-vapor/src/apiCreateApp.ts +++ b/packages/runtime-vapor/src/apiCreateApp.ts @@ -94,7 +94,12 @@ function postPrepareApp(app: App) { const mount = app.mount app.mount = (container, ...args: any[]) => { container = normalizeContainer(container) as ParentNode - return mount(container, ...args) + const proxy = mount(container, ...args) + if (container instanceof Element) { + container.removeAttribute('v-cloak') + container.setAttribute('data-v-app', '') + } + return proxy } }