From b4a5f0e4988ce962c7f73e5b67f2b3816bdde326 Mon Sep 17 00:00:00 2001 From: rishabh saxena Date: Thu, 19 Mar 2020 14:44:50 +0530 Subject: [PATCH] use a common store instance for init and create envs --- .../lib/createEnvironment/server.js | 11 +++-------- .../pages/_app.js | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/examples/with-react-relay-network-modern/lib/createEnvironment/server.js b/examples/with-react-relay-network-modern/lib/createEnvironment/server.js index de2460f9ef617..8fdf47b2b7423 100644 --- a/examples/with-react-relay-network-modern/lib/createEnvironment/server.js +++ b/examples/with-react-relay-network-modern/lib/createEnvironment/server.js @@ -3,12 +3,10 @@ import { urlMiddleware, } from 'react-relay-network-modern/node8' import RelaySSR from 'react-relay-network-modern-ssr/node8/server' -import { Network, Environment, RecordSource, Store } from 'relay-runtime' +import { Network, Environment } from 'relay-runtime' export default { - initEnvironment: () => { - const source = new RecordSource() - const store = new Store(source) + initEnvironment: store => { const relaySSR = new RelaySSR() return { @@ -24,10 +22,7 @@ export default { }), } }, - createEnvironment: (relayData, key) => { - const source = new RecordSource() - const store = new Store(source) - + createEnvironment: (relayData, key, store) => { return new Environment({ store, network: Network.create( diff --git a/examples/with-react-relay-network-modern/pages/_app.js b/examples/with-react-relay-network-modern/pages/_app.js index 79b6b48da6a76..07dfe9462ba7c 100644 --- a/examples/with-react-relay-network-modern/pages/_app.js +++ b/examples/with-react-relay-network-modern/pages/_app.js @@ -4,21 +4,31 @@ import NextApp from 'next/app' import { initEnvironment, createEnvironment } from '../lib/createEnvironment' +import { RecordSource, Store } from 'relay-runtime' + export default class App extends NextApp { static getInitialProps = async ({ Component, router, ctx }) => { + let store + + if (ctx.req) { + const source = new RecordSource() + store = new Store(source) + } + const { variables } = Component.getInitialProps ? await Component.getInitialProps(ctx) : {} try { if (initEnvironment && Component.query) { - const { environment, relaySSR } = initEnvironment() + const { environment, relaySSR } = initEnvironment(store) await fetchQuery(environment, Component.query, variables) return { variables, relayData: await relaySSR.getCache(), + store, } } } catch (e) { @@ -27,17 +37,19 @@ export default class App extends NextApp { return { variables, + store, } } render() { - const { Component, variables = {}, relayData } = this.props + const { Component, variables = {}, relayData, store } = this.props const environment = createEnvironment( relayData, JSON.stringify({ queryID: Component.query ? Component.query.params.name : undefined, variables, - }) + }), + store ) return (