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

[with-apollo] Fix missing rootContext (#3468)

This commit is contained in:
Brice BERNARD 2017-12-18 11:25:06 +01:00 committed by Tim Neutkens
parent 4a3aa261d6
commit 35ffad968c
4 changed files with 18 additions and 9 deletions

View file

@ -1,6 +1,7 @@
import Link from 'next/link' import Link from 'next/link'
import { withRouter } from 'next/router'
export default ({ pathname }) => ( const Header = ({ router: { pathname } }) => (
<header> <header>
<Link prefetch href='/'> <Link prefetch href='/'>
<a className={pathname === '/' ? 'is-active' : ''}>Home</a> <a className={pathname === '/' ? 'is-active' : ''}>Home</a>
@ -23,3 +24,5 @@ export default ({ pathname }) => (
`}</style> `}</style>
</header> </header>
) )
export default withRouter(Header)

View file

@ -36,14 +36,20 @@ export default ComposedComponent => {
// and extract the resulting data // and extract the resulting data
if (!process.browser) { if (!process.browser) {
const apollo = initApollo() const apollo = initApollo()
// Provide the `url` prop data in case a GraphQL query uses it
const url = { query: ctx.query, pathname: ctx.pathname }
try { try {
// Run all GraphQL queries // Run all GraphQL queries
await getDataFromTree( await getDataFromTree(
<ApolloProvider client={apollo}> <ApolloProvider client={apollo}>
<ComposedComponent url={url} {...composedInitialProps} /> <ComposedComponent {...composedInitialProps} />
</ApolloProvider> </ApolloProvider>,
{
router: {
asPath: ctx.asPath,
pathname: ctx.pathname,
query: ctx.query
}
}
) )
} catch (error) { } catch (error) {
// Prevent Apollo Client GraphQL errors from crashing SSR. // Prevent Apollo Client GraphQL errors from crashing SSR.

View file

@ -1,9 +1,9 @@
import App from '../components/App' import App from '../components/App'
import Header from '../components/Header' import Header from '../components/Header'
export default props => ( export default () => (
<App> <App>
<Header pathname={props.url.pathname} /> <Header />
<article> <article>
<h1>The Idea Behind This Example</h1> <h1>The Idea Behind This Example</h1>
<p> <p>

View file

@ -4,9 +4,9 @@ import Submit from '../components/Submit'
import PostList from '../components/PostList' import PostList from '../components/PostList'
import withData from '../lib/withData' import withData from '../lib/withData'
export default withData(props => ( export default withData(() => (
<App> <App>
<Header pathname={props.url.pathname} /> <Header />
<Submit /> <Submit />
<PostList /> <PostList />
</App> </App>