2017-01-22 12:27:06 +00:00
|
|
|
import App from '../components/App'
|
|
|
|
import Header from '../components/Header'
|
|
|
|
|
2017-12-18 10:25:06 +00:00
|
|
|
export default () => (
|
2017-01-22 12:27:06 +00:00
|
|
|
<App>
|
2017-12-18 10:25:06 +00:00
|
|
|
<Header />
|
2017-01-22 12:27:06 +00:00
|
|
|
<article>
|
|
|
|
<h1>The Idea Behind This Example</h1>
|
|
|
|
<p>
|
2018-12-17 16:34:32 +00:00
|
|
|
<a href='https://www.apollographql.com/client/'>Apollo</a> is a GraphQL
|
|
|
|
client that allows you to easily query the exact data you need from a
|
|
|
|
GraphQL server. In addition to fetching and mutating data, Apollo
|
|
|
|
analyzes your queries and their results to construct a client-side cache
|
|
|
|
of your data, which is kept up to date as further queries and mutations
|
|
|
|
are run, fetching more results from the server.
|
2017-01-22 12:27:06 +00:00
|
|
|
</p>
|
|
|
|
<p>
|
2017-12-05 18:50:45 +00:00
|
|
|
In this simple example, we integrate Apollo seamlessly with{' '}
|
|
|
|
<a href='https://github.com/zeit/next.js'>Next</a> by wrapping our pages
|
|
|
|
inside a{' '}
|
|
|
|
<a href='https://facebook.github.io/react/docs/higher-order-components.html'>
|
|
|
|
higher-order component (HOC)
|
2018-12-17 16:34:32 +00:00
|
|
|
</a>
|
|
|
|
. Using the HOC pattern we're able to pass down a central store of query
|
|
|
|
result data created by Apollo into our React component hierarchy defined
|
|
|
|
inside each page of our Next application.
|
2017-01-22 12:27:06 +00:00
|
|
|
</p>
|
|
|
|
<p>
|
2017-12-05 18:50:45 +00:00
|
|
|
On initial page load, while on the server and inside getInitialProps, we
|
|
|
|
invoke the Apollo method,{' '}
|
2018-08-09 21:00:08 +00:00
|
|
|
<a href='https://www.apollographql.com/docs/react/features/server-side-rendering.html#getDataFromTree'>
|
2017-12-05 18:50:45 +00:00
|
|
|
getDataFromTree
|
2018-12-17 16:34:32 +00:00
|
|
|
</a>
|
|
|
|
. This method returns a promise; at the point in which the promise
|
2017-12-05 18:50:45 +00:00
|
|
|
resolves, our Apollo Client store is completely initialized.
|
2017-01-22 12:27:06 +00:00
|
|
|
</p>
|
|
|
|
<p>
|
2017-12-05 18:50:45 +00:00
|
|
|
This example relies on <a href='http://graph.cool'>graph.cool</a> for
|
|
|
|
its GraphQL backend.
|
2017-01-22 12:27:06 +00:00
|
|
|
</p>
|
|
|
|
</article>
|
|
|
|
</App>
|
|
|
|
)
|