summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@matthewphillips.info> 2021-07-01 15:30:48 -0400
committerGravatar GitHub <noreply@github.com> 2021-07-01 14:30:48 -0500
commit4b89f4ed080dd0f1efed0d35311af543de1f9c60 (patch)
treeb763bfbc92dfa4d8f3e1bcc75ee03a4627091a3f
parentf83407e09a204a4e892f431637fe186e3e988a65 (diff)
downloadastro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.tar.gz
astro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.tar.zst
astro-4b89f4ed080dd0f1efed0d35311af543de1f9c60.zip
Allow Preact components to return an empty Fragment (#599)
-rw-r--r--packages/astro/test/fixtures/preact-component/src/components/EmptyFrag.jsx5
-rw-r--r--packages/astro/test/fixtures/preact-component/src/pages/frag.astro10
-rw-r--r--packages/astro/test/preact-component.test.js8
-rw-r--r--packages/renderers/renderer-preact/server.js2
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) {