From 6e894388dad6ead1e486fdaba8d620818bd6bb0d Mon Sep 17 00:00:00 2001 From: jerluc Date: Sat, 1 May 2021 12:10:28 -0700 Subject: [PATCH 1/2] Optionally support async render functions for JSX pages --- engines/jsx.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/jsx.js b/engines/jsx.js index bc5c4dae..9f1fa0af 100644 --- a/engines/jsx.js +++ b/engines/jsx.js @@ -7,14 +7,14 @@ if (!globalThis.React) { import Module from "./module.js"; export default class Jsx extends Module { - render(content, data) { + async render(content, data) { if (!data.children && data.content) { data.children = React.createElement("div", { dangerouslySetInnerHTML: { __html: data.content }, }); } - const element = super.render(content, data); + const element = await Promise.resolve(super.render(content, data)); data.children = element; return ReactDOMServer.renderToStaticMarkup(element); From 6f5e1228fabc37685f55742c0af9f9445e087159 Mon Sep 17 00:00:00 2001 From: Jeremy Lucas Date: Sun, 2 May 2021 09:31:50 -0700 Subject: [PATCH 2/2] Simplifying per @oscarotero's comments Since `await` can already handle non-`Promise` values, we don't need to actually explicitly wrap the result in `Promise.resolve(...)` Co-authored-by: Oscar Otero --- engines/jsx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/jsx.js b/engines/jsx.js index 9f1fa0af..da724548 100644 --- a/engines/jsx.js +++ b/engines/jsx.js @@ -14,7 +14,7 @@ export default class Jsx extends Module { }); } - const element = await Promise.resolve(super.render(content, data)); + const element = await super.render(content, data); data.children = element; return ReactDOMServer.renderToStaticMarkup(element);