-
Notifications
You must be signed in to change notification settings - Fork 0
Bottom Sheet Modal
andreiradchenko edited this page Mar 19, 2024
·
1 revision
React Native Bottom Sheet | Doc | Youtube | Example


-
npm i @gorhom/bottom-sheet
-
Wrap app with
BottomSheetModalProvider
andGestureHandlerRootView
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
export default function App() {
return (
<Provider store={store}>
<GestureHandlerRootView style={{ flex: 1 }}>
<BottomSheetModalProvider>
<ActionSheetProvider>
<NavigationContainer onReady={onLayoutRootView} headerMode="none">
<Main />
</NavigationContainer>
</ActionSheetProvider>
</BottomSheetModalProvider>
</GestureHandlerRootView>
</Provider>
);
}
- Implement
ModalBottomMenu
asforvardRef
and in outer component (PostCard) use its ref to open modal
const openModalMenu = () => bottomSheetRef.current?.present();
- For close modal menu after select item in
BottomMenuItem
import useBottomSheetModal:
import { useBottomSheetModal } from '@gorhom/bottom-sheet';
export const BottomMenuItem = ({
ioniconsName = 'share-social-outline',
text = 'Share via',
handler = () => {},
}) => {
const { dismiss } = useBottomSheetModal();
const onMenuItemPress = () => {
handler();
dismiss();
};
return (
<Styled.ItemWrapper>
<Styled.Container activeOpacity={0.8} onPress={onMenuItemPress}>
<Ionicons name={ioniconsName} size={24} color="black" />
<Styled.ItemText>{text}</Styled.ItemText>
</Styled.Container>
</Styled.ItemWrapper>
);
};