diff options
author | 2023-11-22 22:37:18 +0800 | |
---|---|---|
committer | 2023-11-22 22:37:18 +0800 | |
commit | 19fd19f3934a115471e5caff08fe5b8ba404b739 (patch) | |
tree | 8802cfef36ad13cfe9b9b24b3480d4612cf3f76e /packages/integrations/react/vnode-children.js | |
parent | 710be505c9ddf416e77a75343d8cae9c497d72c6 (diff) | |
parent | 4d1274c47987bf3c247f0ad02309f3c2b9968d6e (diff) | |
download | astro-19fd19f3934a115471e5caff08fe5b8ba404b739.tar.gz astro-19fd19f3934a115471e5caff08fe5b8ba404b739.tar.zst astro-19fd19f3934a115471e5caff08fe5b8ba404b739.zip |
Merge branch 'main' into next
Diffstat (limited to 'packages/integrations/react/vnode-children.js')
-rw-r--r-- | packages/integrations/react/vnode-children.js | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/packages/integrations/react/vnode-children.js b/packages/integrations/react/vnode-children.js index cc8ec3510..0b26ef423 100644 --- a/packages/integrations/react/vnode-children.js +++ b/packages/integrations/react/vnode-children.js @@ -8,24 +8,19 @@ export default function convert(children) { let key = 0; function createReactElementFromNode(node) { - const childVnodes = Array.isArray(node.children) - ? node.children - .map((child) => { - if (child.type === ELEMENT_NODE) { - return createReactElementFromNode(child); - } else if (child.type === TEXT_NODE) { - // 0-length text gets omitted in JSX - return child.value.trim() ? child.value : undefined; - } - }) - .filter((n) => !!n) - : undefined; + const childVnodes = + Array.isArray(node.children) && node.children.length + ? node.children.map((child) => createReactElementFromNode(child)).filter(Boolean) + : undefined; if (node.type === DOCUMENT_NODE) { return createElement(Fragment, {}, childVnodes); } else if (node.type === ELEMENT_NODE) { const { class: className, ...props } = node.attributes; return createElement(node.name, { ...props, className, key: `${id}-${key++}` }, childVnodes); + } else if (node.type === TEXT_NODE) { + // 0-length text gets omitted in JSX + return node.value.trim() ? node.value : undefined; } } |