React 18环境下Expo创建的React Native项目适配问题咨询
解决React 18在Expo React Native项目中的适配问题
首先明确:React Native项目不需要使用ReactDOM,它基于原生组件渲染,完全不依赖Web环境的document对象,你之前添加的index.js代码是Web项目的写法,直接删掉就行。
关于你提到的node_modules/expo下的AppEntry.js,绝对不要手动修改这个文件——依赖更新后会被覆盖,而且会导致项目环境不一致。正确的做法是自定义项目入口:
步骤1:创建自定义入口文件
在项目根目录新建一个index.js文件,内容如下:
import React from 'react'; import { StrictMode } from 'react'; import registerRootComponent from 'expo/build/launch/registerRootComponent'; import App from './App'; // 包裹StrictMode(React 18推荐启用) function Root() { return ( <StrictMode> <App /> </StrictMode> ); } // 注册根组件,Expo会处理React Native端的渲染逻辑 registerRootComponent(Root);
步骤2:修改项目入口配置
打开项目根目录的app.json(或app.config.js),找到main字段,将其值改为你新建的入口文件路径:
{ "expo": { "main": "./index.js", // 其他配置... } }
说明
- Expo的
registerRootComponent已经适配了React 18的并发渲染特性,不需要手动使用Web端的createRoot StrictMode是React 18推荐启用的模式,用于提前发现组件的潜在问题- 自定义入口不会修改依赖内部文件,保证项目的可维护性
内容的提问来源于stack exchange,提问作者DorraXP
相关产品推荐
相关产品推荐

