首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反对意见:在React 18中不再支持ReactDOM.render。

反对意见:在React 18中不再支持ReactDOM.render。
EN

Stack Overflow用户
提问于 2022-03-29 20:11:46
回答 14查看 203.6K关注 0票数 150

每当我创建一个新的React应用程序时,我都会得到这个错误:

警告:在React 18中不再支持ReactDOM.render。请改用createRoot。在您切换到新的API之前,您的应用程序将表现得好像它正在运行Reactive17。

我怎么才能修好它?

我使用以下方法创建了自己的React应用程序:

代码语言:javascript
复制
npx create-react-app my-app
EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2022-03-29 20:29:10

在您的文件index.js中,更改为:

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

reportWebVitals();

打字本

信用来自评论部分下面回答基邦吉·墨菲

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";

const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

reportWebVitals();
票数 250
EN

Stack Overflow用户

发布于 2022-03-31 02:42:14

2022年3月29日发运。ReactDOM.render已在React 18中被废弃,目前发出警告并以兼容模式运行。

反对意见

贬义词

  • react-dom__ ReactDOM.render 遭到了反对。使用它将警告并以React 17模式运行您的应用程序。
  • react-domReactDOM.hydrate已经被否决了。使用它将警告和运行您的应用程序的反应17模式。
  • react-domReactDOM.unmountComponentAtNode已经被否决了。
  • react-domReactDOM.renderSubtreeIntoContainer已经被否决了。
  • react-dom/serverReactDOMServer.renderToNodeStream已经被否决了。

要解决这个问题,您可以恢复到以前版本的React,也可以更新index.js文件,使其与React 18语法保持一致。

示例:

代码语言:javascript
复制
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";

import App from "./App";

const rootElement = document.getElementById("root");
const root = createRoot(rootElement);

root.render(
  <StrictMode>
    <App />
  </StrictMode>
);
票数 50
EN

Stack Overflow用户

发布于 2022-04-25 03:18:19

而不是:

代码语言:javascript
复制
import ReactDOM from 'react-dom'
ReactDom.render(<h1>Your App</h1>, document.getElementById('root'))

使用:

代码语言:javascript
复制
import { createRoot } from 'react-dom/client'
createRoot(document.getElementById('root')).render(<h1>Your App</h1>)

更多细节这里

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71668256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档