Skip to content

Commit e4806ab

Browse files
authoredAug 10, 2019
Merge pull request #1316 from gaearon/12.11
12.11
2 parents 1ea511e + 2cb544d commit e4806ab

File tree

8 files changed

+158
-135
lines changed

8 files changed

+158
-135
lines changed
 

Diff for: ‎examples/styled-components/src/index.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import 'react-lifecycles-compat';
12
import 'babel-polyfill';
23
import React from 'react';
34
import { render } from 'react-dom';
45
import App from './App';
56

6-
const root = document.createElement('div');
7-
document.body.appendChild(root);
7+
//const root = ;
8+
document.body.appendChild(document.createElement('div'));
89

9-
render(<App />, root);
10+
render(<App />, document.getElementsByTagName('div')[0]);

Diff for: ‎examples/styled-components/webpack.config.babel.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,24 @@ module.exports = {
1414
module: {
1515
rules: [
1616
{
17-
exclude: /packages/, // should work without exclude
17+
exclude: /node_modules/, // should work without exclude
1818
test: /\.js$/,
19-
use: ['react-hot-loader/webpack', 'babel-loader'],
19+
use: ['babel-loader'],
20+
},
21+
{
22+
include: /node_modules\/react-lifecycles-compat/, // should work without exclude
23+
test: /\.js$/,
24+
use: ['babel-loader'],
25+
},
26+
{
27+
include: /node_modules\/react-dom/,
28+
test: /\.jsx?$/,
29+
use: {
30+
loader: 'react-hot-loader/webpack',
31+
options: {
32+
noRegister: true,
33+
},
34+
},
2035
},
2136
],
2237
},

Diff for: ‎index.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ export interface Config {
100100
*/
101101
disableHotRendererWhenInjected: boolean;
102102

103+
/**
104+
* Show "hot-loader/react-dom" warning
105+
*/
106+
showReactDomPatchNotification: boolean;
107+
103108
/**
104109
* flag to completely disable RHL for SFC
105110
*/

Diff for: ‎src/babel.dev.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const shouldIgnoreFile = file =>
1010
!!file
1111
.split('\\')
1212
.join('/')
13-
.match(/node_modules\/(react|react-hot-loader)([\/]|$)/);
13+
.match(/node_modules\/(react|react-dom|react-hot-loader)([\/]|$)/);
1414

1515
/* eslint-enable */
1616

@@ -40,14 +40,14 @@ function plugin(args, options = {}) {
4040

4141
const headerTemplate = template(
4242
`(function () {
43-
var enterModule = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal : require('react-hot-loader')).enterModule;
43+
var enterModule = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined);
4444
enterModule && enterModule(module);
4545
}())`,
4646
templateOptions,
4747
);
4848
const footerTemplate = template(
4949
`(function () {
50-
var leaveModule = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal : require('react-hot-loader')).leaveModule;
50+
var leaveModule = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined);
5151
leaveModule && leaveModule(module);
5252
}())`,
5353
templateOptions,
@@ -61,7 +61,7 @@ function plugin(args, options = {}) {
6161
`
6262
(function () {
6363
64-
var reactHotLoader = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal : require('react-hot-loader')).default;
64+
var reactHotLoader = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined);
6565
6666
if (!reactHotLoader) {
6767
return;

Diff for: ‎src/reactHotLoader.js

+5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@ const reactHotLoader = {
135135
patch(React, ReactDOM) {
136136
let typeResolver = resolveType;
137137
/* eslint-disable no-console */
138+
if (ReactDOM && !ReactDOM.render) {
139+
logger.error(
140+
'React-Hot-Loader: broken state detected, please import React-Hot-Loader before react-dom, see https://github.com/gaearon/react-hot-loader/issues/1315',
141+
);
142+
}
138143
if (ReactDOM && ReactDOM.setHotElementComparator) {
139144
ReactDOM.setHotElementComparator(hotComponentCompare);
140145
configuration.disableHotRenderer = configuration.disableHotRendererWhenInjected;

Diff for: ‎src/webpack/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ function transform(source, map) {
3636
if (options.withPatch) {
3737
source = patch(source);
3838
}
39-
if (source.indexOf('reactHotLoader.register') > 0) {
39+
40+
if (source.indexOf('reactHotLoader.register') > 0 || options.noRegister) {
4041
return callback(null, source, map);
4142
}
4243
// This is a Webpack loader, but the user put it in the Babel config.

Diff for: ‎src/webpack/webpackTagCommonJSExports.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44
void (function register() {
55
// eslint-disable-line no-extra-semi
66
/* react-hot-loader/webpack */
7-
var safe_require = function() {
8-
return typeof require === 'undefined' ? undefined : require('react-hot-loader');
9-
};
10-
11-
var reactHotLoader = (typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal : safe_require()).default;
7+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
128

139
if (!reactHotLoader) {
1410
return;

Diff for: ‎test/__snapshots__/babel.test.js.snap

+120-120
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.