expo-routerでcustom navigationを作ったときに、特定のroutingを除去する
- expo-routerでcustom routerを作っていた
- TopTabsが必要だったので、exampleを参考に実装した
- TopTabsに表示している特定のタブを表示/非表示を切り替えたかったが、基本的にNavigation.Screenをconditional renderingしてJSXから除去するのが基本のようで、propsで非表示する方法はわからなかった
- 既存のTabでは
<Tabs.Screen options={{ href: null }}
と指定すればTabを非表示にできる - これと同じようなことをしたかったけど、MaterialTopTabsやMaterialBottomなどには、Tabを指定して非表示にするoptionは生えてなさそうだった
- 色々コードを読んだ感じ、workaroundぽいが
<Navigation.Screen redirect=true />
すれば良さそうだった redirect={true}
すると、 設定されているNavigation.Screenはchildrenからremoveされていそうだった- とりあえずこれで、Screenの出し分けを実装した
- ただ、 redicectはdeprecatedになっている
- こういう対応で非表示にするの、アリ/ナシはgodに質問したので、また回答を待っておきたい