rsnext/test/integration/app-tree/pages/hello.js
JJ Kasper 8c19d78a08 Also provide AppTree in NextPageContext (#8223)
* Also provide AppTree in NextPageContext

* Don't predefine AppTree as null in ctx

* Make update smaller

* Don’t reassign variable

* Add test for AppTree in NextPageContext

* Update utils.ts
2019-08-13 11:33:48 +02:00

33 lines
725 B
JavaScript

import { render } from 'react-dom'
import { renderToString } from 'react-dom/server'
const Page = ({ html }) =>
html ? (
<>
<p>saved:</p>
<div dangerouslySetInnerHTML={{ __html: html }} />
</>
) : (
<p>Hello world</p>
)
Page.getInitialProps = async ({ AppTree, pathname, query, asPath }) => {
let html
const toRender = (
<AppTree router={{ pathname, query, asPath }} Component={Page} />
)
if (typeof window !== 'undefined') {
const el = document.createElement('div')
document.querySelector('body').appendChild(el)
render(toRender, el)
html = el.innerHTML
el.remove()
} else {
html = renderToString(toRender)
}
return { html }
}
export default Page