1
1
import React from 'react' ;
2
+ import { ApolloProvider , getDataFromTree } from 'react-apollo' ;
2
3
import cookie from 'cookie' ;
3
4
import PropTypes from 'prop-types' ;
4
- import { ApolloProvider , getDataFromTree } from 'react-apollo' ;
5
5
import debug from 'debug' ;
6
6
7
7
import initApollo from './initApollo' ;
@@ -28,7 +28,7 @@ export default (ComposedComponent) => {
28
28
}
29
29
30
30
static async getInitialProps ( context ) {
31
- let serverState = { } ;
31
+ let serverState = { apollo : { } } ;
32
32
33
33
// Setup a server-side one-time-use apollo client for initial props and
34
34
// rendering (on server)
@@ -64,20 +64,17 @@ export default (ComposedComponent) => {
64
64
65
65
await getDataFromTree ( app ) ;
66
66
67
- // Extract query data from the Apollo's store
68
- const state = apollo . getInitialState ( ) ;
69
-
70
67
serverState = {
71
68
apollo : { // Make sure to only include Apollo's data state
72
- data : state . data ,
69
+ data : apollo . cache . extract ( ) , // Extract query data from the Apollo's store
73
70
} ,
74
71
} ;
75
72
}
76
73
77
74
return {
78
75
serverState,
79
76
...composedInitialProps ,
80
- }
77
+ } ;
81
78
}
82
79
83
80
constructor ( props ) {
@@ -86,7 +83,7 @@ export default (ComposedComponent) => {
86
83
// render within `getInitialProps()` above (since the entire prop tree
87
84
// will be initialized there), meaning the below will only ever be
88
85
// executed on the client.
89
- this . apollo = initApollo ( this . props . serverState , {
86
+ this . apollo = initApollo ( this . props . serverState . apollo . data , {
90
87
getToken : ( ) => parseCookies ( ) , // ['connect.sid'],
91
88
} ) ;
92
89
}
@@ -96,7 +93,7 @@ export default (ComposedComponent) => {
96
93
< ApolloProvider client = { this . apollo } >
97
94
< ComposedComponent { ...this . props } />
98
95
</ ApolloProvider >
99
- )
96
+ ) ;
100
97
}
101
- }
102
- }
98
+ } ;
99
+ } ;
0 commit comments