I’ve traversed the internet like never before to find a solution for this problem as the provided solution by the docs did not work in the slightest.
I had the following navigational Set-Up:
- Bottom Tabs
- A (NativeStack)
- 1 (Screen)
- 2 (Screen)
- 3 (Screen)
- B (NativeStack)
- C (NativeStack)
- A (NativeStack)
I wanted to hide the bottom bar in Screen 1. What finally did the trick was the following snippet in the corresponding screen:
useEffect(() => {
navigation.getParent()?.setOptions({
tabBarStyle: {
display: "none"
}
});
return () => navigation.getParent()?.setOptions({
tabBarStyle: undefined
});
}, [navigation]);
The effect is run when the navigation prop updates and with that implicitly after the screen is being opened. With getParent()
I get the bottom tabs navigator and can set the options with setOptions(...)
. To bring the bottom tabs back one has to manually set the options. I solved this by returning the method that resets the tabBarStyle in the call of useEffect()
. This call is being made when it’s time to clean-up, meaning that it will run as soon as the screen is being unmounted.
May this save same of you of the desperation I had to go through.