小编Cra*_*han的帖子

升级到react@18和react-dom@18失败

我有一个现有的 React 17 应用程序,它最初是作为带有 TypeScript 选项的 create-react-app 输出。我想更改 package.json 以包含react@18.0.0然后react-dom@18.0.0启动应用程序,该步骤工作正常。

然后我尝试index.tsx按照 React 18 迁移说明告诉您的方式更改文件,将相关段更改为index.tsx

ReactDOM.createRoot(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

或者npm run build或者npm run start给我编译错误,说 createRoot 未定义。这可能是由于我依赖于@types/react@17.0.43@types/react-dom@17.0.14。对于 React 18,DefiniteTyped 似乎还没有这些文件的任何更新版本。

所以,我回去创建了一个全新的应用程序npx create-react-app react18 --template typescript。它现在需要react@18react-dom@18,但仍然具有旧的@types/依赖项。当您从 render() 切换到 createRoot() 时,它也会给出相同的编译错误。

作为进一步的一步,我问自己“如果我们忽略 TypeScript 会发生什么?” 使用 . 创建了另一个应用程序npx create-react-app react18js。它取决于react@18.0.0react-dom@18.0.0符合预期,但仍会ReactDOM.render()在其 …

typescript reactjs

14
推荐指数
4
解决办法
3万
查看次数

标签 统计

reactjs ×1

typescript ×1