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

React Native底部菜单栏无图标,如何正确配置tabBarIcon属性?

问题根因

你的底部导航结构中,createBottomTabNavigator 绑定的路由对象是createStackNavigator实例,而非Stack内部的页面组件。你当前将tabBarIcon配置写在Stack内部的LeagueTableScreen组件上,底部导航无法读取到该层级的配置,所以图标不生效。

解决方案

直接在createBottomTabNavigator的路由配置中,给每个绑定Stack的路由项新增navigationOptions配置即可,修改你的App.js中mainFlow部分的代码:

mainFlow: createBottomTabNavigator({
    Rosa: {
      screen: createStackNavigator({
          Team: TeamScreen,
          PlayerDetail: PlayerDetailScreen,
      }),
      navigationOptions: {
        tabBarLabel: 'Rosa',
        // 替换成你对应要显示的图标
        tabBarIcon: () => <SimpleLineIcons name="user" size={18} />
      }
    },
    Classifica: {
      screen: createStackNavigator({
          LeagueTable: LeagueTableScreen,
      }),
      navigationOptions: {
        tabBarLabel: 'Classifica',
        tabBarIcon: () => <SimpleLineIcons name="people" size={18} />
      }
    },
    Calendario: {
      screen: createStackNavigator({
          LeagueCalendar: LeagueCalendarScreen,
      }),
      navigationOptions: {
        tabBarLabel: 'Calendario',
        // 替换成你对应要显示的图标
        tabBarIcon: () => <SimpleLineIcons name="calendar" size={18} />
      }
    },
}),

补充优化

如果需要根据Tab的聚焦状态切换图标颜色,可以修改tabBarIcon的写法:

tabBarIcon: ({ focused }) => (
  <SimpleLineIcons 
    name="people" 
    size={18} 
    color={focused ? '#你的主题色' : '#未选中灰色'} 
  />
)

配置完成后,原来LeagueTableScreen组件里的navigationOptions中的tabBarIcon配置可以删除,保留title配置不影响Stack内部顶部导航栏的显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:54:03