From fe962b12de28609be37fa9ab8e9a1306a5d34d22 Mon Sep 17 00:00:00 2001 From: Naoyuki Kanezawa Date: Thu, 22 Dec 2016 00:57:25 +0900 Subject: [PATCH] make sure to flush styles and head (#459) --- server/document.js | 18 ++++++++++++------ server/render.js | 11 +++++++++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/server/document.js b/server/document.js index e31ed8d3..49f75272 100644 --- a/server/document.js +++ b/server/document.js @@ -6,12 +6,18 @@ import flush from 'styled-jsx/server' export default class Document extends Component { static getInitialProps ({ renderPage }) { let head - const { html, css, ids } = renderStatic(() => { - const page = renderPage() - head = page.head - return page.html - }) - const styles = flush() + let rendered + let styles + try { + rendered = renderStatic(() => { + const page = renderPage() + head = page.head + return page.html + }) + } finally { + styles = flush() + } + const { html, css, ids } = rendered const nextCSS = { css, ids, styles } return { html, head, nextCSS } } diff --git a/server/render.js b/server/render.js index 25facc03..d4bc35b3 100644 --- a/server/render.js +++ b/server/render.js @@ -62,8 +62,15 @@ async function doRender (req, res, pathname, query, { router: new Router(pathname, query) }) - const html = (staticMarkup ? renderToStaticMarkup : renderToString)(app) - const head = Head.rewind() || defaultHead() + const render = staticMarkup ? renderToStaticMarkup : renderToString + + let html + let head + try { + html = render(app) + } finally { + head = Head.rewind() || defaultHead() + } return { html, head } }