1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

Fix first render of with-react-helmet example (#6235)

This commit is contained in:
Fredrik Höglund 2019-02-10 20:48:13 +01:00 committed by Tim Neutkens
parent 63c25a9c60
commit b05df70872
4 changed files with 44 additions and 34 deletions

View file

@ -46,4 +46,5 @@ now
This an minimalistic example of how to combine next.js and [react-helmet](https://github.com/nfl/react-helmet).
The title of the page shall be changed to "Hello next.js!"
If you go to the page `/about`, the title will be overridden to "About | Hello next.js!"
The rest is all up to you.

View file

@ -0,0 +1,33 @@
import React from 'react'
import App, { Container } from 'next/app'
import Helmet from 'react-helmet'
export default class MyApp extends App {
static async getInitialProps ({ Component, ctx }) {
let pageProps = {}
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
}
return { pageProps }
}
render () {
const { Component, pageProps } = this.props
return (
<Container>
<Helmet
htmlAttributes={{ lang: 'en' }}
title='Hello next.js!'
meta={[
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ property: 'og:title', content: 'Hello next.js!' }
]}
/>
<Component {...pageProps} />
</Container>
)
}
}

View file

@ -26,24 +26,10 @@ export default class extends Document {
.map(el => this.props.helmet[el].toComponent())
}
get helmetJsx () {
return (
<Helmet
htmlAttributes={{ lang: 'en' }}
title='Hello next.js!'
meta={[
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ property: 'og:title', content: 'Hello next.js!' }
]}
/>
)
}
render () {
return (
<html {...this.helmetHtmlAttrComponents}>
<Head>
{this.helmetJsx}
{this.helmetHeadComponents}
</Head>
<body {...this.helmetBodyAttrComponents}>

View file

@ -1,24 +1,14 @@
import React from 'react'
import Helmet from 'react-helmet'
export default class About extends React.Component {
static async getInitialProps ({ req }) {
if (req) {
Helmet.renderStatic()
}
return { title: 'About' }
}
render () {
const { title } = this.props
return (
<div>
<Helmet
title={`${title} | Hello next.js!`}
meta={[{ property: 'og:title', content: title }]}
/>
About the World
</div>
)
}
export default function About () {
return (
<div>
<Helmet
title='About | Hello next.js!'
meta={[{ property: 'og:title', content: 'About' }]}
/>
About the World
</div>
)
}