react-native-hide-tab-bar
Version:
A React Native hook to hide the bottom tab bar on scroll
108 lines (82 loc) • 2.72 kB
Markdown
A React Native hook to hide the bottom tab bar on scroll.
- **Hide the bottom tab bar when scrolling down**
- **Show the bottom tab bar when scrolling up**
- **Uses `Animated.Value` for smooth transitions**
- **Customizable and easy to integrate with `react-native-reanimated`**
```sh
npm install react-native-hide-tab-bar
or
yarn add react-native-hide-tab-bar
```
Wrap your bottom tab navigator or the entire app with BottomTabWrapper to provide context.
```bash
import { NavigationContainer } from "@react-navigation/native";
import { BottomTabWrapper } from "react-native-hide-tab-bar";
const App = () => {
return (
<BottomTabWrapper>
<NavigationContainer>
{/* Your Navigation Screens */}
</NavigationContainer>
</BottomTabWrapper>
);
};
export default App;
```
To integrate the animated tab bar visibility into your bottom tab navigator, use the following implementation:
```bash
import {useContext} from 'react';
import { TabBarVisibilityContext } from "react-native-hide-tab-bar";
const BottomTab = () => {
const context = useContext(TabBarVisibilityContext);
const tabBarTranslateY = context?.tabBarTranslateY ?? 0;
return (
<Tab.Navigator
screenOptions={{
tabBarStyle:
{
backgroundColor: "white",
position: "absolute",
bottom: 0,
left: 0,
right: 0,
transform: [{ translateY: tabBarTranslateY }],
},
}}
>
{/* Your Tab Screens */}
</Tab.Navigator>
);
};
```
Call useHideTabBarOnScroll inside your scrollable screen components and attach the onScroll handler.
```bash
import React from "react";
import { FlatList, Text, View } from "react-native";
import { useHideTabBarOnScroll } from "react-native-hide-tab-bar";
const ScreenA = () => {
const { onScroll } = useHideTabBarOnScroll();
return (
<FlatList
...
onScroll={onScroll}
scrollEventThrottle={16}
/>
);
};
export default ScreenA;
```
This project is built using the following technologies:
- **React Native** - For building cross-platform mobile applications.
- **React Navigation** - For handling navigation and bottom tab navigation.
- **React Context API** - For managing the tab bar visibility state.
- **React Native Animated API** - For smooth tab bar transitions.
- **TypeScript** - For static type checking and improved developer experience.