diff --git a/Changelog.md b/Changelog.md index 048b725d22..619fc105f3 100644 --- a/Changelog.md +++ b/Changelog.md @@ -21,6 +21,35 @@ necessary anymore. [PR #2533](https://github.com/apollographql/react-apollo/pull/2533) +- Restore original `getDataFromTree(tree, context)` API, and introduce a + new function called `getMarkupFromTree` to enable custom rendering + functions: + ```typescript + export default function getDataFromTree( + tree: React.ReactNode, + context: { [key: string]: any } = {}, + ) { + return getMarkupFromTree({ + tree, + context, + renderFunction: renderToStaticMarkup, + }); + } + + export type GetMarkupFromTreeOptions = { + tree: React.ReactNode; + context?: { [key: string]: any }; + renderFunction?: typeof renderToStaticMarkup; + }; + + export function getMarkupFromTree({ + tree, + context = {}, + renderFunction = renderToStaticMarkup, + }: GetMarkupFromTreeOptions): Promise {...} + ``` + [PR #2586](https://github.com/apollographql/react-apollo/pull/2586) + ## 2.2.4 (October 2, 2018) ### Bug Fixes diff --git a/examples/ssr/server/main.js b/examples/ssr/server/main.js index 485cebc056..433f8c63a2 100644 --- a/examples/ssr/server/main.js +++ b/examples/ssr/server/main.js @@ -1,7 +1,7 @@ import { renderToString } from 'react-dom/server'; import { onPageLoad } from 'meteor/server-render'; import { ApolloClient } from 'apollo-client'; -import { getDataFromTree, ApolloProvider } from 'react-apollo'; +import { getMarkupFromTree, ApolloProvider } from 'react-apollo'; import { InMemoryCache } from 'apollo-cache-inmemory'; import { HttpLink } from 'apollo-link-http'; import { WebApp } from 'meteor/webapp'; @@ -27,12 +27,14 @@ export const render = async sink => { ); - const start = +new Date; + const start = Date.now(); // Load all data from local server - await getDataFromTree(WrappedApp); - const body = renderToString(WrappedApp); - console.log("server rendering took", new Date - start, "ms"); - sink.renderIntoElementById('app', body); + const markup = await getMarkupFromTree({ + tree: WrappedApp, + renderFunction: renderToString, + }); + console.log("server rendering took", Date.now() - start, "ms"); + sink.renderIntoElementById('app', markup); sink.appendToBody(`