diff --git a/lib/head.js b/lib/head.js index 703fb81c0c1faf5e9782bcf12cf956fda80b9620..ea580942b5c661bb1635c9735895291c3f56f516 100644 --- a/lib/head.js +++ b/lib/head.js @@ -11,6 +11,10 @@ class Head extends React.Component { } } +export function defaultHead () { + return [] +} + function reduceComponents (components) { return components .map((c) => c.props.children) @@ -18,6 +22,7 @@ function reduceComponents (components) { .map((children) => React.Children.toArray(children)) .reduce((a, b) => a.concat(b), []) .reverse() + .concat(...defaultHead()) .filter(unique()) .reverse() .map((c) => { diff --git a/server/render.js b/server/render.js index 777a9f35ac9d89ecff7f33c0451a3d5bf273d4e0..51fb324ab371390af768a1a6a492210961c1e8bf 100644 --- a/server/render.js +++ b/server/render.js @@ -8,7 +8,7 @@ import read from './read' import getConfig from './config' import Router from '../lib/router' import Document from '../lib/document' -import Head from '../lib/head' +import Head, {defaultHead} from '../lib/head' import App from '../lib/app' export async function render (url, ctx = {}, { @@ -33,7 +33,7 @@ export async function render (url, ctx = {}, { return (staticMarkup ? renderToStaticMarkup : renderToString)(app) }) - const head = Head.rewind() || [] + const head = Head.rewind() || defaultHead() const config = await getConfig(dir) const doc = createElement(Document, { diff --git a/test/fixtures/basic/pages/head.js b/test/fixtures/basic/pages/head.js index 599aabbed406f6d155bd04edd077a4698465e1af..43ded20eb5cb058122e77a2c6c4109675500bc33 100644 --- a/test/fixtures/basic/pages/head.js +++ b/test/fixtures/basic/pages/head.js @@ -4,6 +4,7 @@ import Head from 'next/head' export default () =>
+

I can haz meta tags

diff --git a/test/index.js b/test/index.js index 8a396305bfcfabd62e3ad4b165a3b80803580010..ba583ebea57de3ebac4c0e9189f2aa2dc4a5c3e2 100644 --- a/test/index.js +++ b/test/index.js @@ -9,6 +9,7 @@ test.before(() => build(dir)) test(async t => { const html = await render('/stateless') + t.true(html.includes('')) t.true(html.includes('

My component!

')) }) @@ -25,6 +26,7 @@ test(async t => { test(async t => { const html = await (render('/head')) + t.true(html.includes('')) t.true(html.includes('')) t.true(html.includes('

I can haz meta tags

')) })