JSX: Functional component support innerElement

This commit is contained in:
pengfei.zhou
2022-07-20 20:51:26 +08:00
committed by osborn
parent e7332f1db1
commit 654b63f3c6
7 changed files with 37 additions and 62 deletions

View File

@@ -32,21 +32,16 @@ export namespace jsx {
return e;
} else {
const f = constructor as Function
const e = Reflect.apply(f, undefined, [config])
if (e instanceof Fragment) {
return children
}
const args = config ?? {}
if (children && children.length > 0) {
if (children.length === 1) {
children = children[0]
}
if (Reflect.has(e, "innerElement")) {
Reflect.set(e, "innerElement", children, e)
} else {
throw new Error(
`Do not support add child for ${e.viewType()}`
);
}
(args as any).innerElement = children
}
const e = Reflect.apply(f, undefined, [args])
if (e instanceof Fragment) {
return children
}
return e
}