-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApp.jsx
48 lines (40 loc) · 1.17 KB
/
App.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var Immutable = require('immutable');
var React = require('react');
var Route = require('react-router').Route;
var Router = require('react-router');
var App = React.createClass({
render () {
return (
<div className='app'>
{this.props.data.get('message')}
</div>
);
}
});
var routes = (
<Route path="/hello" handler={App} />
);
var App = module.exports = {
/** Initialize with the necessary page data **/
initialize (pageData) {
this.pageData = Immutable.fromJS(pageData);
},
/** Render a live React component into the DOM (browser) **/
render (domNode) {
Router.run(routes, Router.HistoryLocation, Handler => {
React.render(<Handler data={this.pageData}/>, domNode);
});
},
/** Render static markup (server) **/
renderHtml (path, cb) {
Router.run(routes, path, Handler => {
cb(React.renderToString(<Handler data={this.pageData}/>));
});
}
};
/** If the context is a browser, render the app **/
if (typeof window !== 'undefined') {
var pageData = JSON.parse(document.getElementById('page-data').getAttribute('data-page'));
App.initialize(pageData);
App.render(document.getElementById('app-container'));
}