Reputation: 3553
I'm new to react native and want to show badges with notification numbers in my react-native bottom tab navigator. I want something like the image bellow:
https://cloud.githubusercontent.com/assets/1215843/24154227/8cf55b04-0e8b-11e7-8ce5-30aa00527824.png
I use mobx for state management in my react-native app, in each store I would have a computed value for badge counts (number which appear inside the red badge icon).
import { observable, action, flow } from "mobx";
export class DiscoverStore
{
@observable badgeCount = 0;
}
My bottom tabs component looks like this:
const Tab = createBottomTabNavigator();
export default TAB1 = () => {
const { trendingStore, DiscoverStore } = useStores();
return (
<Tab.Navigator style={{ height:50 }}
screenOptions={({ route }) => ({
headerShown: true ,
tabBarIcon: ({ focused, color, size }) =>
{
let iconName;
if (route.name === 'Trending') { iconName = focused ? 'home' : 'home-outline'; }
else if (route.name === 'Discover'){ iconName = focused ? 'crosshairs-gps' : 'crosshairs';}
else if (route.name === 'Favorites'){ iconName = focused ? 'heart' : 'heart-outline';}
else if (route.name === 'Profile'){ iconName = focused ? 'arrow-right-bold-box' : 'arrow-right-bold-box-outline' ;}
return <Icon name={iconName} size={25} color='rgb(68,68,68)' style={{ marginTop:5 }}/>;
},})}
tabBarOptions={{
keyboardHidesTabBar: true,
activeTintColor: 'rgb(30,30,30)',
inactiveTintColor: 'rgb(68,68,68)',
//activeBackgroundColor:'',
//inactiveBackgroundColor:'',
style : { height:50 },
tabStyle: { paddingVertical: 2, },
labelStyle:
{
fontSize: 12,
margin: 0,
padding: 0,
},
}}
>
<Tab.Screen name="Trending" component={STACK1}/>
<Tab.Screen name="Discover" component={STACK2}/>
<Tab.Screen name="Favorites" component={STACK3}/>
<Tab.Screen name="Profile" component={STACK4}/>
</Tab.Navigator>
);}
Upvotes: 1
Views: 2462
Reputation: 1119
You can use the tabBarBadge navigation option of the screens:
<Tab.Screen name="Discover" component={STACK2}
options={{tabBarBadge:(DiscoverStore.badgeCount>0?DiscoverStore.badgeCount:null)}}/>
tabBarBadge in the React Navigation documentation:
https://reactnavigation.org/docs/tab-based-navigation/#add-badges-to-icons
Upvotes: 2