Home

Awesome

TabNavigator

A tab bar that switches between scenes, written in JS for cross-platform support. It works on iOS and Android.

This component is compatible with React Native 0.16 and newer.

The look and feel is slightly different than the native navigator but it is better in some ways. Also it is pure JavaScript.

Note: This is not the same TabNavigation component that is used in ExNavigation, the API and implementations are slightly different -- react-native-tab-navigator stands on its own and does not depend on any other navigation library.

Demo

For demo, please check the example folder

<img src="./demo.gif" alt="demo" style="height: 600px;"/>

Install

Make sure that you are in your React Native project directory and run:

npm install react-native-tab-navigator --save

Usage

Import TabNavigator as a JavaScript module:

import TabNavigator from 'react-native-tab-navigator';

This is an example of how to use the component and some of the commonly used props that it supports:

<TabNavigator>
  <TabNavigator.Item
    selected={this.state.selectedTab === 'home'}
    title="Home"
    renderIcon={() => <Image source={...} />}
    renderSelectedIcon={() => <Image source={...} />}
    badgeText="1"
    onPress={() => this.setState({ selectedTab: 'home' })}>
    {homeView}
  </TabNavigator.Item>
  <TabNavigator.Item
    selected={this.state.selectedTab === 'profile'}
    title="Profile"
    renderIcon={() => <Image source={...} />}
    renderSelectedIcon={() => <Image source={...} />}
    renderBadge={() => <CustomBadgeView />}
    onPress={() => this.setState({ selectedTab: 'profile' })}>
    {profileView}
  </TabNavigator.Item>
</TabNavigator>

See TabNavigatorItem's supported props for more info.

Hiding the Tab Bar

You can hide the tab bar by using styles. For example:

let tabBarHeight = 0;
<TabNavigator
  tabBarStyle={{ height: tabBarHeight, overflow: 'hidden' }}
  sceneStyle={{ paddingBottom: tabBarHeight }}
/>

Props

TabNavigator props

propdefaulttypedescription
sceneStyleinheritedobject (style)define for rendered scene
tabBarStyleinheritedobject (style)define style for TabBar
tabBarShadowStyleinheritedobject (style)define shadow style for tabBar
hidesTabTouchfalsebooleandisable onPress opacity for Tab

TabNavigator.Item props

propdefaulttypedescription
renderIconnonefunctionreturns Item icon
renderSelectedIconnonefunctionreturns selected Item icon
badgeTextnonestring or numbertext for Item badge
renderBadgenonefunctionreturns Item badge
titlenonestringItem title
titleStyleinheritedstylestyling for Item title
selectedTitleStylenonestylestyling for selected Item title
tabStyleinheritedstylestyling for tab
selectednonebooleanreturn whether the item is selected
onPressnonefunctiononPress method for Item
allowFontScalingfalsebooleanallow font scaling for title
accessiblenonebooleanindicates if this item is an accessibility element
accessibilityLabelnonestringoverride text for screen readers
testIDnonestringused to locate this item in end-to-end-tests