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

TS严格模式下React Navigation底部导航报No overload matches this call错误

报错原因

你定义的createScreenOptions函数参数格式不符合@react-navigation/bottom-tabs的类型要求:screenOptions接收的函数入参是同时包含route和navigation两个属性的对象,不是直接的route对象。同时你的tabBarIcon参数定义也不符合规范,它的入参是包含size、color的对象,不是两个独立参数。


修复方案

修改后的app.navigator.tsx代码

import React from "react";
import { createBottomTabNavigator, BottomTabNavigationOptions } from "@react-navigation/bottom-tabs";
import { RouteProp } from '@react-navigation/native';
import { Ionicons } from "@expo/vector-icons";

import { HomeNavigator } from "./home.navigator";

// 定义底部Tab路由参数列表,符合TS严格模式规范
type RootTabParamList = {
  Hjem: undefined;
};

const Tab = createBottomTabNavigator<RootTabParamList>();

const TAB_ICON: Record<keyof RootTabParamList, string> = {
  Hjem: "md-home",
};

// 调整入参格式,指定正确类型
const createScreenOptions = ({ route }: { route: RouteProp<RootTabParamList, keyof RootTabParamList> }): BottomTabNavigationOptions => {
  const iconName = TAB_ICON[route.name];
  return {
    // 修正tabBarIcon入参格式
    tabBarIcon: ({ size, color }: { size: number; color: string }) => (
      <Ionicons name={iconName} size={size} color={color} />
    ),
  };
};

export const AppNavigator = () => (
      <Tab.Navigator
        screenOptions={createScreenOptions}
        tabBarOptions={{
          activeTintColor: "red",
          inactiveTintColor: "blue",
        }}
      >
        <Tab.Screen name="Hjem" component={HomeNavigator} />
      </Tab.Navigator>
);

其余文件不需要修改,修改后即可符合strict严格模式的类型校验要求,报错会自动消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:18:02