If you are reporting a bug or having an issue setting up React Hot Loader, please fill in below. For feature requests, feel free to remove this template entirely.
What you are reporting: when I user React.lazy, it doesn't work
What you think should happen: state can remain
What actually happens: state can't remain
React Hot Loader version: 4.12.19
"devDependencies": {
"@babel/core": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-proposal-decorators": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.8.3",
"@babel/preset-env": "^7.8.3",
"@babel/preset-react": "^7.8.3",
"babel-loader": "^8.0.6",
"express": "^4.17.1",
"html-webpack-plugin": "^3.2.0",
"webpack": "^4.41.5",
"webpack-cli": "^3.3.10",
"webpack-dev-middleware": "^3.7.2",
"webpack-dev-server": "^3.10.3",
"webpack-hot-middleware": "^2.25.0"
},
"dependencies": {
"@babel/runtime-corejs3": "^7.8.3",
"connected-react-router": "^6.7.0",
"history": "^4.10.1",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-hot-loader": "^4.12.19",
"react-redux": "^7.1.3",
"react-router-dom": "^5.1.2",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"
}
Run these commands in the project folder and fill in their results:
node -v: v12.15.0npm -v: 6.13.4Then, specify:
Please take the time to create a new project that reproduces the issue.
You can copy your project that experiences the problem and start removing things until you鈥檙e left with the minimal reproducible demo. This helps contributors, and you might get to the root of your problem during that process.
Push to GitHub and paste the link here.
you can use my project and reappear it : https://github.com/rainydayDY/webpack-fe
Your example is too big. I've just checked this example and it works perfectly.
However there are two "modes" RHL can handle lazy with. Please try another one.
See Out-of-bound warning
If the tail update detection is not something you want or need, you can disable this behaviour by setting setConfig({ trackTailUpdates:false }).
By disabling trackTailUpdates you will activate _another_ mode with a bit more aggressive lazy management.
@theKashey
how to run the example ??
I run the newest example with error in browser:
Uncaught TypeError: realPolyfill is not a function
at eval (react-hot-loader.development.js:1379)
at Object../node_modules/react-hot-loader/dist/react-hot-loader.development.js (bundle.js:1676)
at __webpack_require__ (bundle.js:725)
at fn (bundle.js:102)
at eval (index.js:19)
at Object../node_modules/react-hot-loader/index.js (bundle.js:1700)
at __webpack_require__ (bundle.js:725)
at fn (bundle.js:102)
at eval (react-lifecycles-compat.es.js:8)
at Object.eval (react-lifecycles-compat.es.js:10)
Someone say it maybe @hot-loader/react-dom problem.
https://github.com/hot-loader/react-dom/issues/8#issuecomment-620611639
But, It is not work for me without using @hot-loader/react-dom.
I found a interesting thins when i debugger:
react-hot-loader will target update function; The root component forceUpdate()React-Hot-Loader: some components were updated out-of-bound. Updating your app to reconcile the changes.If i wrap lazy load component by hot, `module, everything work well.
There are some question:
Found a problem in tailUpdate - any pure/memo component could stop this "secondary" update. So if your application is good written - you will experience this problem, but only if react-dom patch is not enabled.
I don't have a "broken" example I am able to fix, so, @xyy94813 - could you try to use this version of hot.dev.js, and check is it helping in your case or not - https://github.com/gaearon/react-hot-loader/blob/b14f49b085a6b48b8eeadeeb1a4bf25c981dc71c/src/hot.dev.js
https://github.com/gaearon/react-hot-loader/pull/1448/files#diff-eb1f44974215c23befb11f74f6a2d4d4
@theKashey
Well... Looks like it has side effects
Each child node in the chunk will be re-mounted again.
I'm not sure what is your expectation.
The changes I've made could not cause remount. They were just about a bit more _deeper_ updates.
I am stuck in confusion...
I write a minimized implementation...
Everything work well with [email protected]...
PS: lazy-component will be re-mount too...
I have also encountered the same problem锛孒ow can I solve it, for example?
webpack.dev.config.js:
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
alias: {
"@": path.resolve(__dirname, 'src'),
// 'react-dom': '@hot-loader/react-dom', //delete this line
}
},
{
loader: 'babel-loader',
options: {
cacheDirectory: true,
// See #6846 for context on why cacheCompression is disabled
cacheCompression: false,
presets: ['@babel/preset-env'],
plugins: [
'lodash',
// 'react-hot-loader/babel', // delete this line
// '@babel/plugin-proposal-object-rest-spread',
]
},
},
in app.jsx : just use export default hot(App);
it will work fine in code spliting condition
I have also encountered the same problem锛孒ow can I solve it, for example?
https://github.com/X-neuron/antdFront.git this is good example for hot reload in code split condition
I have also encountered the same problem锛孒ow can I solve it, for example?
https://github.com/X-neuron/antdFront.git this is good example for hot reload in code split condition
I can't believe the official configuration caused the error, but it exist...
I am using react-refresh with react-refresh-webpack-plugin.
It work well with lazy-component.
This plugin has been integrated into CRA.
It looks like it will be released with CRA V4.
react-hot-loader will be deprecated...
https://github.com/gaearon/react-hot-loader/issues/1453
It's already
I am using react-refresh with react-refresh-webpack-plugin.
It work well with lazy-component.This plugin has been integrated into CRA.
It looks like it will be released with CRA V4.
react-hot-loaderwill be deprecated...1453
How did you solve this issue,
I鈥檓 using cra4.0 (react17.0.1) with react-refresh and we pack plug-in, it still could not be able to handle hot reload with react.lazy component.