You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:06:51