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

如何在react-navigation中正确实现抽屉项图标?现有方案报React未定义错误

解决DrawerNavigator项图标出现React未定义的问题

你遇到的Reference Error: React is not Defined问题其实根源很清晰——在使用JSX的代码块里没有导入React。所有JSX语法最终都会被编译成React.createElement()调用,一旦缺失React的导入,运行时就找不到这个核心对象,自然会抛出错误。

下面是一步步的解决方案:

1. 导入必要的依赖

在定义drawerRouteConfig的文件顶部,必须添加React的导入,同时确保你已经导入了React Native的Image和Dimensions组件(因为你用到了动态计算的width变量):

import React from 'react';
import { Image, Dimensions } from 'react-native';
// 别忘了导入你的各个Stack组件:InboxStack, DiscoverStack, AccountStack

2. 正确初始化width变量

你代码里用到的width需要先通过Dimensions获取设备窗口宽度,所以在配置路由前先定义这个变量:

const { width } = Dimensions.get('window');

3. 修正路由配置的完整写法

确保每个需要图标的路由都在navigationOptions里正确配置drawerIcon,让JSX语法能正常编译。完整的配置示例如下:

const drawerRouteConfig = {
  Inbox: {
    screen: InboxStack,
    navigationOptions: {
      drawerIcon: () => (
        <Image 
          source={require('../assets/img/white-inbox.png')} 
          style={{ 
            height: width * 0.05, 
            width: width * 0.05,
            resizeMode: 'contain' 
          }} 
        />
      )
    }
  },
  Discover: {
    screen: DiscoverStack,
    // 按需给Discover添加图标
    navigationOptions: {
      drawerIcon: () => (
        <Image 
          source={require('../assets/img/white-discover.png')} 
          style={{ height: width * 0.05, width: width * 0.05, resizeMode: 'contain' }} 
        />
      )
    }
  },
  Account: {
    screen: AccountStack,
    // 按需给Account添加图标
    navigationOptions: {
      drawerIcon: () => (
        <Image 
          source={require('../assets/img/white-account.png')} 
          style={{ height: width * 0.05, width: width * 0.05, resizeMode: 'contain' }} 
        />
      )
    }
  },
};

额外注意点

  • 确认你的图片路径是正确的,../assets/img/white-inbox.png要和项目中实际的文件位置匹配,否则会出现图片加载失败的问题。
  • 从你的代码结构来看应该是使用React Navigation v4版本,上面的方案完全适配;如果是v5及以上版本,路由配置写法会有差异,但核心的React导入和JSX使用逻辑是一致的。

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:22:48