From 9613dd7e4b8da778f714cf2a209949cb43719190 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 31 Jul 2020 23:32:02 -0400 Subject: [PATCH] Add `renderToString` and `renderToStaticMarkup` --- src/React/Basic/DOM/Server.js | 7 +++++++ src/React/Basic/DOM/Server.purs | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/React/Basic/DOM/Server.js create mode 100644 src/React/Basic/DOM/Server.purs diff --git a/src/React/Basic/DOM/Server.js b/src/React/Basic/DOM/Server.js new file mode 100644 index 0000000..9bf90cb --- /dev/null +++ b/src/React/Basic/DOM/Server.js @@ -0,0 +1,7 @@ +"use strict"; + +const ReactDOMServer = require("react-dom/server"); + +exports.renderToString = ReactDOMServer.renderToString; + +exports.renderToStaticMarkup = ReactDOMServer.renderToStaticMarkup; diff --git a/src/React/Basic/DOM/Server.purs b/src/React/Basic/DOM/Server.purs new file mode 100644 index 0000000..a69185f --- /dev/null +++ b/src/React/Basic/DOM/Server.purs @@ -0,0 +1,26 @@ +module React.Basic.DOM.Server + ( renderToString + , renderToStaticMarkup + ) where + +import React.Basic (JSX) + +-- | Render a React element to its initial HTML. React will return an HTML string. +-- | You can use this method to generate HTML on the server and send the markup +-- | down on the initial request for faster page loads and to allow search engines +-- | to crawl your pages for SEO purposes. +-- | +-- | If you call `ReactDOM.hydrate` on a node that already has this server-rendered +-- | markup, React will preserve it and only attach event handlers, allowing you to +-- | have a very performant first-load experience. +foreign import renderToString :: JSX -> String + +-- | Similar to `renderToString`, except this doesn’t create extra DOM attributes +-- | that React uses internally, such as `data-reactroot`. This is useful if you +-- | want to use React as a simple static page generator, as stripping away the +-- | extra attributes can save some bytes. +-- | +-- | If you plan to use React on the client to make the markup interactive, do not +-- | use this method. Instead, use `renderToString` on the server and `ReactDOM.hydrate` +-- | on the client. +foreign import renderToStaticMarkup :: JSX -> String