ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点
Posted
技术标签:
【中文标题】ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点【英文标题】:ReactDOM.render: Unable to find node on an unmounted component after React upgrade from 16.4.2 to 16.5.2 【发布时间】:2019-03-15 00:37:51 【问题描述】:我已将 ReactJS 项目更新到最新版本,npm update
从 Visual Studio 2017 运行,结果如下:
+ @material-ui/icons@2.0.3
+ react-dom@16.5.2
+ @material-ui/core@1.5.1
+ react@16.5.2
+ @aspnet/signalr@1.0.4
added 4 packages from 3 contributors, removed 10 packages, updated 20 packages and audited 185 packages in 23.309s
found 0 vulnerabilities
当我运行 npm outdated
时,我仍然得到:
Package Current Wanted Latest Location
@material-ui/core 1.5.1 1.5.1 3.2.0 Dixie
@material-ui/icons 2.0.3 2.0.3 3.0.1 Dixie
现在当我运行在更新之前工作的项目时,我得到了
ReactDOM.render:无法在未安装的组件上找到节点。
这是我的 package.json:
"name": "Dixie",
"version": "0.1.0",
"private": true,
"dependencies":
"bootstrap": "^3.3.7",
"react": "^16.4.1",
"react-bootstrap": "^0.31.5",
"react-dom": "^16.4.1",
"react-router-bootstrap": "^0.24.4",
"react-router-dom": "^4.2.2",
"react-scripts": "^1.1.4",
"rimraf": "^2.6.2"
,
"scripts":
"start": "rimraf ./build && react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
React 更新到 16.5.2 后如何修复这个错误?
我做到了
npm install @material-ui/icons@3.0.1
npm install @material-ui/core@3.2.0
npm cache clean --force
现在npm outdated
什么都不显示,但错误仍然存在。
也尝试过(没有任何收获):
npm uninstall --save react-dom
npm uninstall --save react
npm install react-dom
npm install react
唯一“有效”的是降级
npm install react-dom@16.4.2
npm install react@16.4.2
但这意味着我无法升级。又试了另一台电脑,同样的项目,同样的错误出来了。
【问题讨论】:
【参考方案1】:我遇到了同样的问题。最后将 React 和 React-dom 升级到 16.6.0 有所帮助。
【讨论】:
确实如此。你能提供一些背景或解释吗?【参考方案2】:我建议卸载/删除损坏的软件包并安装更新的软件包。
您可以将 React 降级到 16.4.2。这样:
npm uninstall --save react-dom
npm uninstall --save react
npm install react-dom@16.4.2
npm install react@16.4.2
【讨论】:
我没有任何损坏的包裹。npm-check
告诉我Your modules look amazing. Keep up the great work.
我觉得不错。您是否尝试过完全删除并再次安装?
我为这个错误消息苦苦挣扎了几天,但我从来没有意识到要更新 react-dom
和 react
。看到这个问答为我触发了灯泡。谢谢!
@robabby 您的意思是您使用版本 16.5.2 修复了错误?我还在 16.4.2 降级...
@robabby 嗯,对我来说,将这些更新运行到 16.5.2 仍然会导致上述错误。以上是关于ReactDOM.render:React 从 16.4.2 升级到 16.5.2 后,无法在未安装的组件上找到节点的主要内容,如果未能解决你的问题,请参考以下文章
ReactDOM.render 与 React 组件渲染区别
ReactDOM.render和ReactDOM.createPortal
React.render和reactDom.render的区别
React 源码分析:调用ReactDOM.render后发生了什么