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

React Native报错:RecentExpenses组件回调需函数,收到undefined求排查

费用跟踪应用导航错误排查

问题描述

开发一款带底部导航的费用跟踪应用,包含三个页面:Manage Expenses、All Expenses、Recent Expense。出现以下错误:

Invariant Violation: View config getter callback for component RecentExpenses must be a function (received undefined)

已确认文件导入路径正确,需排查问题根源。

相关代码

App.js

import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import ManageExpense from "../ExpenseTracker/screens/ManageExpense";
import AllExpenses from "../ExpenseTracker/screens/AllExpenses";
import RecentExpenses from "../ExpenseTracker/screens/RecentExpenses";

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 (
    <>
      <NavigationContainer>
        <Stack.Navigator>
          <Stack.Screen name="ExpensesOverview" component={ExpensesOverview}/>
          <Stack.Screen name="ManageExpense" component={ManageExpense} />
        </Stack.Navigator>
      </NavigationContainer>
    </>
  );
};

AllExpenses.js

import {Text} from 'react-native';
function AllExpenses(){
    return <Text>All Expense Screen</Text>;
}
export default AllExpenses;

RecentExpenses.js

import {Text} from 'react-native';
function RecentExpenses() {
    return <Text>Recent Expenses Screen</Text>;
}
export default RecentExpenses;

ManageExpense.js

import {Text} from 'react-native'
function ManageExpense(){
    return <Text>Manage Expense Screen</Text>;
}
export default ManageExpense;

问题根源与修复

错误出在ExpensesOverview组件的底部导航配置中:BottomTabs.Screen的component属性被传入了字符串值("RecentExpenses"、"AllExpenses"),但React Navigation要求这里必须传入实际的组件对象,而非组件名称的字符串。

修改后的ExpensesOverview代码如下:

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

只需去掉component属性值的引号,直接使用导入的组件变量即可解决该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:30:58