diff options
author | 2021-07-01 15:30:48 -0400 | |
---|---|---|
committer | 2021-07-01 14:30:48 -0500 | |
commit | 4b89f4ed080dd0f1efed0d35311af543de1f9c60 (patch) | |
tree | b763bfbc92dfa4d8f3e1bcc75ee03a4627091a3f | |
parent | f83407e09a204a4e892f431637fe186e3e988a65 (diff) | |
download | astro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.tar.gz astro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.tar.zst astro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.zip |
Allow Preact components to return an empty Fragment (#599)
4 files changed, 24 insertions, 1 deletions
diff --git a/packages/astro/test/fixtures/preact-component/src/components/EmptyFrag.jsx b/packages/astro/test/fixtures/preact-component/src/components/EmptyFrag.jsx new file mode 100644 index 000000000..0a74552b5 --- /dev/null +++ b/packages/astro/test/fixtures/preact-component/src/components/EmptyFrag.jsx @@ -0,0 +1,5 @@ +import { h, Fragment } from 'preact'; + +export default function() { + return <Fragment></Fragment> +}
\ No newline at end of file diff --git a/packages/astro/test/fixtures/preact-component/src/pages/frag.astro b/packages/astro/test/fixtures/preact-component/src/pages/frag.astro new file mode 100644 index 000000000..a451768ce --- /dev/null +++ b/packages/astro/test/fixtures/preact-component/src/pages/frag.astro @@ -0,0 +1,10 @@ +--- +import FragComponent from '../components/EmptyFrag.jsx'; +--- + +<html> +<head> + <title>Preact component returns fragment</title> +</head> +<body><FragComponent /></body> +</html>
\ No newline at end of file diff --git a/packages/astro/test/preact-component.test.js b/packages/astro/test/preact-component.test.js index 77e17e03c..31f206d7e 100644 --- a/packages/astro/test/preact-component.test.js +++ b/packages/astro/test/preact-component.test.js @@ -32,4 +32,12 @@ PreactComponent('Can use hooks', async ({ runtime }) => { assert.equal($('#world').length, 1); }); +PreactComponent('Can export a Fragment', async ({ runtime }) => { + const result = await runtime.load('/frag'); + if (result.error) throw new Error(result.error); + + const $ = doc(result.contents); + assert.equal($('body').children().length, 0, 'nothing rendered but it didn\'t throw.'); +}); + PreactComponent.run(); diff --git a/packages/renderers/renderer-preact/server.js b/packages/renderers/renderer-preact/server.js index 8465dbe69..ac8661a49 100644 --- a/packages/renderers/renderer-preact/server.js +++ b/packages/renderers/renderer-preact/server.js @@ -10,7 +10,7 @@ function check(Component, props, children) { } const { html } = renderToStaticMarkup(Component, props, children); - return Boolean(html); + return typeof html === 'string'; } function renderToStaticMarkup(Component, props, children) { |