如何修复reactdom.unmountcomponentatnode reform中的react中的错误?
reactdom.unmountcomponentatnode(document.getElementById(“ root”));在最新反应中不可用。
它显示下面的错误。我该如何修复?
“您正在调用reactdom.unmountcomponentatnode(),该容器以前传递给reactdomclient.createroot()。不支持这。您是要调用root.unmount()吗?”
“ UnmountComponentAtnode():您正在尝试卸载的节点是由React渲染的,并且不是顶级容器。相反,让Parent Component更新其状态和rerender,以删除此组件。”
import {createRoot} from "react-dom/client";
const container = document.getElementById('root');
const root = createRoot(container);
root.render(<App tab={"home"} />);
root.unmount();
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from "react";
class LifeCycle extends React.Component {
state = {opacity: 1};
disappear = () => {
root.unmount(document.getElementById("root"));
}
componentDidMount() {
this.timer = setInterval(() => {
let {opacity} = this.state;
opacity-=0.1
if (opacity <= 0) opacity = 1;
this.setState({opacity});
}, 200);
}
componentWillUnmount() {
clearInterval(this.timer)
}
render() {
return (
<div>
<h1 style={{opacity: this.state.opacity}}>React is too difficult!</h1>
<button onClick={this.disappear}>click to remove</button>
</div>
)
}
}
export default LifeCycle;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
The ReactDOM.unmountComponentAtNode(document.getElementById("root")); are unavailable in latest React.
It shows the errors below. How can I fix it?
"You are calling ReactDOM.unmountComponentAtNode() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?"
"unmountComponentAtNode(): The node you're attempting to unmount was rendered by React and is not a top-level container. Instead, have the parent component update its state and rerender in order to remove this component."
import {createRoot} from "react-dom/client";
const container = document.getElementById('root');
const root = createRoot(container);
root.render(<App tab={"home"} />);
root.unmount();
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
import React from "react";
class LifeCycle extends React.Component {
state = {opacity: 1};
disappear = () => {
root.unmount(document.getElementById("root"));
}
componentDidMount() {
this.timer = setInterval(() => {
let {opacity} = this.state;
opacity-=0.1
if (opacity <= 0) opacity = 1;
this.setState({opacity});
}, 200);
}
componentWillUnmount() {
clearInterval(this.timer)
}
render() {
return (
<div>
<h1 style={{opacity: this.state.opacity}}>React is too difficult!</h1>
<button onClick={this.disappear}>click to remove</button>
</div>
)
}
}
export default LifeCycle;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论