Skip to content

Commit 6c50e20

Browse files
authored
fix(runtime-vapor): pass plain object props to createVNode during vdom interop (#13382)
close #14027
1 parent 593ecf5 commit 6c50e20

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

packages/runtime-vapor/__tests__/vdomInterop.spec.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,28 @@ describe('vdomInterop', () => {
4949

5050
expect(html()).toBe('foo')
5151
})
52+
53+
test('should handle class prop when vapor renders vdom component', () => {
54+
const VDomChild = defineComponent({
55+
setup() {
56+
return () => h('div', { class: 'foo' })
57+
},
58+
})
59+
60+
const VaporChild = defineVaporComponent({
61+
setup() {
62+
return createComponent(VDomChild as any, { class: () => 'bar' })
63+
},
64+
})
65+
66+
const { html } = define({
67+
setup() {
68+
return () => h(VaporChild as any)
69+
},
70+
}).render()
71+
72+
expect(html()).toBe('<div class="foo bar"></div>')
73+
})
5274
})
5375

5476
describe('v-model', () => {

packages/runtime-vapor/src/vdomInterop.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ function createVDOMComponent(
280280
const frag = new VaporFragment([])
281281
const vnode = (frag.vnode = createVNode(
282282
component,
283-
rawProps && new Proxy(rawProps, rawPropsProxyHandlers),
283+
rawProps && extend({}, new Proxy(rawProps, rawPropsProxyHandlers)),
284284
))
285285
const wrapper = new VaporComponentInstance(
286286
{ props: component.props },

0 commit comments

Comments
 (0)