React Native中React 18的createRoot警告问题求助
React 18中ReactDOM.render警告的React Native(Expo)解决方案
你遇到的Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead.警告,问题不在你提供的App.js文件中——因为React Native本身不会使用ReactDOM.render,而是通过AppRegistry注册组件。警告根源通常是项目的web端入口配置、依赖版本未适配React 18导致的,以下是具体解决步骤:
1. 升级Expo SDK到兼容React 18的版本
React 18需要搭配Expo SDK 48及以上版本(对应React Native 0.70+)。如果你的SDK版本低于48,直接升级即可自动适配新的React 18 API:
expo upgrade
按照终端提示完成升级,Expo会自动调整项目的入口配置,无需手动修改App.js。
2. 检查并修改web端入口文件(如果启用了Expo Web)
如果你的项目支持web端,根目录下的web/index.js可能仍在使用旧的ReactDOM.render写法,需要替换为createRoot:
// 旧写法 import ReactDOM from 'react-dom'; import App from '../App'; ReactDOM.render(<App />, document.getElementById('root')); // 替换为React 18的新写法 import { createRoot } from 'react-dom/client'; import App from '../App'; const rootElement = document.getElementById('root'); const root = createRoot(rootElement); root.render(<App />);
3. 确认React与React Native版本匹配
如果已经升级SDK但警告仍存在,检查package.json中的依赖版本:
- React版本应为
^18.0.0及以上 - React Native版本应为
0.70.0及以上
如果版本不匹配,手动调整后执行npm install或yarn install重新安装依赖。
内容的提问来源于stack exchange,提问作者Rahul Rajput
相关产品推荐
相关产品推荐

