diff --git a/packages/runtime-vapor/__tests__/vdomInterop.spec.ts b/packages/runtime-vapor/__tests__/vdomInterop.spec.ts index a9baea6ab2d..546078c8bcb 100644 --- a/packages/runtime-vapor/__tests__/vdomInterop.spec.ts +++ b/packages/runtime-vapor/__tests__/vdomInterop.spec.ts @@ -49,6 +49,28 @@ describe('vdomInterop', () => { expect(html()).toBe('foo') }) + + test('should handle class prop when vapor renders vdom component', () => { + const VDomChild = defineComponent({ + setup() { + return () => h('div', { class: 'foo' }) + }, + }) + + const VaporChild = defineVaporComponent({ + setup() { + return createComponent(VDomChild as any, { class: () => 'bar' }) + }, + }) + + const { html } = define({ + setup() { + return () => h(VaporChild as any) + }, + }).render() + + expect(html()).toBe('
') + }) }) describe('v-model', () => { diff --git a/packages/runtime-vapor/src/vdomInterop.ts b/packages/runtime-vapor/src/vdomInterop.ts index c516f64c17a..ab232ff8c78 100644 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@ -280,7 +280,7 @@ function createVDOMComponent( const frag = new VaporFragment([]) const vnode = (frag.vnode = createVNode( component, - rawProps && new Proxy(rawProps, rawPropsProxyHandlers), + rawProps && extend({}, new Proxy(rawProps, rawPropsProxyHandlers)), )) const wrapper = new VaporComponentInstance( { props: component.props },