UNPKG

next-utils

Version:

Collection of handy utility functions for working within a Next.js project.

36 lines (30 loc) 1.08 kB
import React from 'react'; import RenderPromises from './RenderPromises'; export default function getDataFromTree(tree, context = {}) { return getMarkupFromTree({ tree, context, // If you need to configure this renderFunction, call getMarkupFromTree // directly instead of getDataFromTree. renderFunction: require("react-dom/server").renderToStaticMarkup, }); } export function getMarkupFromTree({ tree, context = {}, // The rendering function is configurable! We use renderToStaticMarkup as // the default, because it's a little less expensive than renderToString, // and legacy usage of getDataFromTree ignores the return value anyway. renderFunction = require("react-dom/server").renderToStaticMarkup, }) { const renderPromises = new RenderPromises(); function process() { const html = renderFunction(React.cloneElement(tree, { renderPromises, })); return renderPromises.hasPromises() ? renderPromises.consumeAndAwaitPromises().then(process) : html; } return Promise.resolve().then(process); }