})
)
})
+
+ // for simple JSX compat
+ // note this signature is not supported in types; it's purely for usage with
+ // compiled code.
+ test('support variadic children', () => {
+ // @ts-ignore
+ const vnode = h('div', null, h('span'), h('span'))
+ expect(vnode.children).toMatchObject([
+ {
+ type: 'span'
+ },
+ {
+ type: 'span'
+ }
+ ])
+ })
})
// Actual implementation
export function h(type: any, propsOrChildren?: any, children?: any): VNode {
- if (arguments.length === 2) {
+ const l = arguments.length
+ if (l === 2) {
if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
// single vnode without props
if (isVNode(propsOrChildren)) {
return createVNode(type, null, propsOrChildren)
}
} else {
- if (isVNode(children)) {
+ if (l > 3) {
+ children = Array.prototype.slice.call(arguments, 2)
+ } else if (l === 3 && isVNode(children)) {
children = [children]
}
return createVNode(type, propsOrChildren, children)