如何修复reactdom.unmountcomponentatnode reform中的react中的错误?

发布于 2025-01-21 21:31:46 字数 2163 浏览 2 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文