rsnext/examples/with-react-relay-network-modern/pages/index.js
Ting-Hsiang Hsu 064917682f
[Example] Fix relay network request (#16525)
* fix(with-react-relay-network-modern): fix README.md typo error

* fix(with-react-relay-network-modern): should not use store cache for create environment

* fix(with-react-relay-network-modern): should not request api again

* feat(with-react-relay-network-modern): add relay-hooks package

* feat(with-react-relay-network-modern): use new RelayEnvironmentProvider

* feat(with-react-relay-network-modern): add useQuery hook

* fix(with-react-relay-network-modern): fix cache error

* fix(with-react-relay-network-modern): fix server loading

Co-authored-by: Luis Alvarez <luis@vercel.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2020-09-02 14:31:02 -05:00

39 lines
841 B
JavaScript

import { graphql, fetchQuery } from 'react-relay'
import { useQuery } from 'relay-hooks'
import { initEnvironment } from '../lib/createEnvironment'
import BlogPosts from '../components/BlogPosts'
const query = graphql`
query pages_indexQuery {
viewer {
...BlogPosts_viewer
}
}
`
const Index = ({ environment }) => {
const { error, props } = useQuery(query)
if (error) return <div>{error.message}</div>
if (!props) return <div>Loading</div>
return <BlogPosts viewer={props.viewer} />
}
export async function getStaticProps() {
const { environment, relaySSR } = initEnvironment()
await fetchQuery(environment, query)
const relayData = (await relaySSR.getCache())?.[0]
return {
props: {
relayData: !relayData ? null : [[relayData[0], relayData[1].json]],
},
}
}
export default Index