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

React-Native Expo-Go应用报错:无效React组件问题求助

React-Native导航报错:Invalid 'component' prop for 'ManageExpense' Screen

错误信息

Error: Got an invalid value for 'component' prop for the screen 'ManageExpense'. It must be a valid React Component.

问题代码

App.js

import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

//importing custom components
import ManageExpense from './screens/ManageExpense';
import RecentExpenses from './screens/RecentExpenses';
import AllExpenses from './screens/AllExpenses';

const Stack = createNativeStackNavigator();
const BottomTabs = createBottomTabNavigator();

function ExpensesOverview() {
  return (
    <BottomTabs.Navigator>
      <BottomTabs.Screen name="RecentExpenses" component={RecentExpenses} />
      <BottomTabs.Screen name="AllExpenses" component={AllExpenses} />
    </BottomTabs.Navigator>
  );
}

export default function App() {
  return (
    <>
      <StatusBar style="auto" />
      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="ExpensesOverview" component={ExpensesOverview} />
          <Stack.Screen name="ManageExpense" component={ManageExpense} />
        </Stack.Navigator>
      </NavigationContainer>
    </>
  );
}

AllExpenses.js

import React from 'react';
import { Text } from 'react-native';

export default function AllExpenses() {
    return <Text>AllExpenses Screen</Text>
}

ManageExpense.js

import React from 'react';
import { Text } from 'react-native';

export default function ManageExpense() {
    return <Text>ManageExpense Screen</Text>
}

RecentExpenses.js

import React from 'react';
import { Text } from 'react-native';

export default function RecentExpenses() {
    return <Text>RecentExpenses Screen</Text>
}

解决方案

1. 验证文件路径与文件名

确认./screens/ManageExpense.js文件存在,且文件名大小写完全匹配导入语句(React Native在macOS/Linux系统对文件名大小写敏感,避免出现manageexpense.js这类错误命名)。

2. 检查组件导出与语法

临时修改App.js,将ManageExpense组件直接定义在文件内,替换原import语句:

// 替换原import ManageExpense的语句
const ManageExpense = () => <Text>ManageExpense Screen</Text>;

如果修改后能正常运行,说明原ManageExpense.js文件存在导出异常或语法错误,仔细检查文件是否有遗漏的括号、分号等问题。

3. 清除Expo缓存

停止当前Expo服务器,执行以下命令清除缓存后重启:

npx expo start --clear

同时关闭Expo Go客户端,重新扫码加载项目。

4. 重新安装兼容的导航依赖

确保导航库版本与当前Expo版本兼容,执行以下命令重新安装依赖:

npx expo install @react-navigation/native @react-navigation/native-stack @react-navigation/bottom-tabs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:51:23