Fix bug mixing props on 404

This commit is contained in:
LordMathis 2019-11-06 23:55:21 +01:00
parent 07c4de6424
commit 8099a4b45e
No known key found for this signature in database
GPG Key ID: 575849FD91CE470C
5 changed files with 46 additions and 18 deletions

View File

@ -3,10 +3,10 @@ import { Navbar, Header } from '.'
import '../stylesheets/globals.scss'
import contentStyle from '../stylesheets/content.scss'
export const NotFoundPage = () => {
export const NotFoundPage = (props) => {
return (
<div>
<Navbar />
<Navbar config={props.config}/>
<div className={contentStyle.contentWrapper}>
<Header header={'Uhm... WHAT?'} />
<div className={contentStyle.content}>

View File

@ -1,12 +1,34 @@
import React, { Component } from 'react'
import { Wrapper, NotFoundPage } from '.'
import PropTypes from 'prop-types'
import '../stylesheets/globals.scss'
export default class NotFoundWrapper extends Component {
static propTypes = {
config: PropTypes.object.isRequired
}
constructor (props) {
super(props)
let data
if (__isBrowser__) {
data = window.__INITIAL_DATA__
delete window.__INITIAL_DATA__
} else {
data = props.staticContext.context
}
this.state = {
config: data[1]
}
}
render () {
return (
<Wrapper>
<NotFoundPage />
<NotFoundPage config={this.state.config}/>
</Wrapper>
)
}

View File

@ -14,11 +14,9 @@ export default class MainContainer extends Component {
// eslint-disable-next-line no-undef
if (__isBrowser__) {
data = window.__INITIAL_DATA__
console.log("window:", data)
delete window.__INITIAL_DATA__
} else {
data = props.staticContext.context
console.log("StaticContext:", data)
}
this.state = {

View File

@ -14,11 +14,9 @@ export default class PostContainer extends Component {
// eslint-disable-next-line no-undef
if (__isBrowser__) {
data = window.__INITIAL_DATA__
console.log("window:", data)
delete window.__INITIAL_DATA__
} else {
data = props.staticContext.context
console.log("StaticContext:", data)
}
this.state = {

View File

@ -15,24 +15,34 @@ export class ServerRenderer {
render (req, res, next) {
const activeRoute = routes.find((route) => matchPath(req.url, route)) || {}
const activeRoute = routes.find((route) => matchPath(req.url, route)) || false
const head = this.head
const config = this.config
const promise = activeRoute.getData
? activeRoute.getData(req.path)
: Promise.resolve()
promise.then((data) => {
const context = [data, config]
if (!activeRoute) {
const context = [{}, config]
const markup = renderToString(
<Router location={req.url} context={{ context }}>
<App/>
</Router>
)
res.status(200).send(renderFullPage(markup, head, data, config))
}).catch(next)
res.status(404).send(renderFullPage(markup, head, {}, config))
} else {
const promise = activeRoute.getData
? activeRoute.getData(req.path)
: Promise.resolve()
promise.then((data) => {
const context = [data, config]
const markup = renderToString(
<Router location={req.url} context={{ context }}>
<App/>
</Router>
)
res.status(200).send(renderFullPage(markup, head, data, config))
}).catch(next)
}
}
}