Skip to content

Commit fd4fc57

Browse files
committed
Upgrade to latest React
1 parent e3f0a2c commit fd4fc57

File tree

4 files changed

+36
-19
lines changed

4 files changed

+36
-19
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"express": "^4.13.3",
2727
"js-yaml": "^3.4.0",
2828
"less": "^2.7.1",
29-
"react": "^0.14.3",
29+
"react": "15.3.1",
30+
"react-dom": "15.3.1",
3031
"sane": "^1.2.0",
3132
"webpack": "^1.12.1"
3233
},

resources/renderReactPage.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9+
var ReactDOM = require('react-dom/server')
910
var React = require('react');
1011

1112
module.exports = renderReactPage;
@@ -21,7 +22,9 @@ function renderReactPage(options) {
2122
var component = options.component;
2223
var props = options.props;
2324

24-
var html = React.renderToStaticMarkup(React.createElement(component, props));
25+
var html = ReactDOM.renderToStaticMarkup(
26+
React.createElement(component, props)
27+
);
2528

2629
if (html.indexOf('<feed') !== -1) {
2730
// react remove namespace so we re-add manually

resources/writer.js

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
var vm = require('vm');
1010
var webpack = require('webpack');
1111
var React = require('react');
12+
var ReactDOM = require('react-dom/server')
1213
var fs = require('fs');
1314
var yaml = require('js-yaml');
1415
var path = require('path');
@@ -76,7 +77,7 @@ function writeReact(writePath, file, fileData) {
7677
var { module, props } = getReactData(componentData);
7778
var componentPath = require.resolve(path.resolve(path.dirname(file.absPath), module));
7879
var component = require(componentPath);
79-
var initialRender = React.renderToString(React.createElement(component, props));
80+
var initialRender = ReactDOM.renderToString(React.createElement(component, props));
8081
var guid = `r${++id}`;
8182
if (!script) {
8283
script = `var React = require('react');\n`;
@@ -168,30 +169,41 @@ function writeScript(writePath, file, fileData) {
168169
var id = 100;
169170
var script;
170171
var context;
172+
var renderHere;
173+
var relRequire;
171174

172175
var withInitialRenders = fileData.replace(SCRIPT_RX, function (_, scriptData) {
173176
if (!script) {
174-
script = `var React = require('react');
175-
var id = 100;
177+
script = `var id = 100;
176178
function renderHere(element) {
177-
React.render(element, document.getElementById('r' + (++id)));
179+
ReactDOM.render(element, document.getElementById('r' + (++id)));
178180
}`;
179-
var renderHere = function (element) {
180-
renders += `<div id="r${++id}">${React.renderToString(element)}</div>`;
181+
renderHere = function (element) {
182+
renders += `<div id="r${++id}">${ReactDOM.renderToString(element)}</div>`;
181183
};
182-
var relRequire = reqPath => require(
184+
relRequire = reqPath => require(
183185
reqPath[0] === '.' ?
184186
path.resolve(path.dirname(file.absPath), reqPath) :
185187
reqPath
186188
);
187-
context = { console, process, React, require: relRequire, renderHere };
188-
context.global = context;
189-
context = vm.createContext(context);
190189
}
191190
var es5 = require('babel-core').transform(scriptData).code;
192-
script += `(function () {\n${es5}\n}());\n`;
191+
es5 = `(function () {\n${es5}\n}());\n`;
192+
script += es5;
193193
renders = '';
194-
var output = vm.runInContext(es5, context);
194+
var realRequire = require;
195+
global.require = relRequire;
196+
global.renderHere = renderHere;
197+
global.React = React;
198+
try {
199+
vm.runInThisContext(es5);
200+
} catch (e) {
201+
throw e;
202+
} finally {
203+
global.require = realRequire;
204+
delete global.renderHere;
205+
delete global.React;
206+
}
195207
return renders;
196208
});
197209

@@ -245,7 +257,8 @@ function writeScript(writePath, file, fileData) {
245257
resolve(
246258
withInitialRenders.replace(
247259
'</body></html>',
248-
`<script src="//cdn.jsdelivr.net/react/0.13.3/react.js"></script>` +
260+
`<script src="//cdn.jsdelivr.net/react/15.3.1/react.js"></script>` +
261+
`<script src="//cdn.jsdelivr.net/react/15.3.1/react-dom.js"></script>` +
249262
`<script src="${path.basename(writePath)}.${stats.hash}.js"></script></body></html>`
250263
)
251264
);

site/_core/MiniGraphiQL.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class QueryEditor extends React.Component {
121121
require('codemirror-graphql/lint');
122122
require('codemirror-graphql/mode');
123123

124-
this.editor = CodeMirror(React.findDOMNode(this), {
124+
this.editor = CodeMirror(this.domNode, {
125125
value: this.props.value || '',
126126
viewportMargin: Infinity,
127127
tabSize: 2,
@@ -297,7 +297,7 @@ class QueryEditor extends React.Component {
297297
}
298298

299299
render() {
300-
return <div className="query-editor" />;
300+
return <div className="query-editor" ref={e => this.domNode = e} />;
301301
}
302302
}
303303

@@ -317,7 +317,7 @@ class ResultViewer extends React.Component {
317317
var CodeMirror = require('codemirror');
318318
require('codemirror/mode/javascript/javascript');
319319

320-
this.viewer = CodeMirror(React.findDOMNode(this), {
320+
this.viewer = CodeMirror(this.domNode, {
321321
value: this.props.value || '',
322322
viewportMargin: Infinity,
323323
readOnly: true,
@@ -350,6 +350,6 @@ class ResultViewer extends React.Component {
350350
}
351351

352352
render() {
353-
return <div className="result-window" />;
353+
return <div className="result-window" ref={e => this.domNode = e} />;
354354
}
355355
}

0 commit comments

Comments
 (0)