File tree Expand file tree Collapse file tree 3 files changed +23
-21
lines changed Expand file tree Collapse file tree 3 files changed +23
-21
lines changed Original file line number Diff line number Diff line change 1
1
import React from 'react' ;
2
2
import Butter from 'buttercms'
3
+ import Transmit from 'react-transmit' ;
3
4
4
5
const butter = Butter ( 'b60a008584313ed21803780bc9208557b3b49fbb' ) ;
5
6
6
7
var Hello = React . createClass ( {
7
- getInitialState : function ( ) {
8
- return { loaded : false } ;
9
- } ,
10
- componentWillMount : function ( ) {
11
- butter . post . list ( ) . then ( ( resp ) => {
12
- this . setState ( {
13
- loaded : true ,
14
- resp : resp . data
15
- } )
16
- } ) ;
17
- } ,
18
8
render : function ( ) {
19
- if ( this . state . loaded ) {
9
+ if ( this . props . posts ) {
20
10
return (
21
11
< div >
22
- { this . state . resp . data . map ( ( post ) => {
12
+ { this . props . posts . data . map ( ( post ) => {
23
13
return (
24
14
< div key = { post . slug } > { post . title } </ div >
25
15
)
@@ -32,4 +22,13 @@ var Hello = React.createClass({
32
22
}
33
23
} ) ;
34
24
35
- export default Hello ;
25
+ export default Transmit . createContainer ( Hello , {
26
+ // These must be set or else it would fail to render
27
+ initialVariables : { } ,
28
+ // Each fragment will be resolved into a prop
29
+ fragments : {
30
+ posts ( ) {
31
+ return butter . post . list ( ) . then ( ( resp ) => resp . data ) ;
32
+ }
33
+ }
34
+ } ) ;
Original file line number Diff line number Diff line change 11
11
"express" : " ^4.15.3" ,
12
12
"path" : " ^0.12.7" ,
13
13
"react" : " ^0.14.8" ,
14
- "react-dom" : " ^0.14.8"
14
+ "react-dom" : " ^0.14.8" ,
15
+ "react-transmit" : " ^3.2.0"
15
16
},
16
17
"devDependencies" : {
17
18
"webpack" : " ^1.12.14" ,
Original file line number Diff line number Diff line change @@ -4,16 +4,18 @@ import path from 'path';
4
4
import React from 'react' ;
5
5
import ReactDOMServer from 'react-dom/server' ;
6
6
import Hello from './Hello.js' ;
7
+ import Transmit from 'react-transmit' ;
7
8
8
9
function handleRender ( req , res ) {
9
- const html = ReactDOMServer . renderToString ( < Hello /> ) ;
10
+ Transmit . renderToString ( Hello ) . then ( ( { reactString, reactData} ) => {
11
+ fs . readFile ( './index.html' , 'utf8' , function ( err , data ) {
12
+ if ( err ) throw err ;
10
13
11
- fs . readFile ( './index.html' , 'utf8' , function ( err , data ) {
12
- if ( err ) throw err ;
14
+ const document = data . replace ( / < d i v i d = " a p p " > < \/ d i v > / , `<div id="app"> ${ reactString } </div>` ) ;
15
+ const output = Transmit . injectIntoMarkup ( document , reactData , [ '/build/client.js' ] ) ;
13
16
14
- const document = data . replace ( / < d i v i d = " a p p " > < \/ d i v > / , `<div id="app">${ html } </div>` ) ;
15
-
16
- res . send ( document ) ;
17
+ res . send ( document ) ;
18
+ } ) ;
17
19
} ) ;
18
20
}
19
21
You can’t perform that action at this time.
0 commit comments