TS报错Property 'render' does not exist on type 'typeof React'.ts(2339)如何解决?
报错触发原因
- 导入路径错误:
render方法是react-dom包的专属导出,你代码中错误地从react包导入ReactDOM对象,而react包本身不存在render属性,TypeScript类型校验失败后抛出2339错误。 - 版本适配问题:如果你的项目使用React 18+版本,即使正确导入
react-dom,旧版ReactDOM.renderAPI已经被官方废弃移除,同样会触发类型报错。
修复方案
根据你项目使用的React版本选择对应修复方式即可:
React 17及更早版本
直接修正react-dom的导入语句,必要时补充安装类型声明包:
- 调整导入代码:
// 把错误的import ReactDOM from "react"替换为下面的导入 import ReactDOM from "react-dom"
- 若仍报错,执行命令安装类型声明:
npm i @types/react @types/react-dom -D
修正后完整运行代码如下:
import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; // 提前确保App组件路径正确 ReactDOM.render(<App />, document.getElementById("root"));
React 18及以上版本
React 18废弃了原有的render方法,改用createRootAPI创建根节点实例再调用渲染,调整代码如下:
import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' // 非空断言!用于告知TS root节点一定存在,可自行替换为你需要的空值判断逻辑 ReactDOM.createRoot(document.getElementById('root')!).render( <React.StrictMode> <App /> </React.StrictMode> )
内容的提问来源于stack exchange,提问作者Willy Huang
相关产品推荐
相关产品推荐

