expoでBottomタブを特定の画面のみに表示させる方法
Bottomタブメニューを特定の画面にのみ表示させたいときがあるかと思います。
例えば、ユーザーが最初に訪れる、アプリの説明画面などです。
そこには、アプリのタブメニューは表示させたくありません。
今回は、Bottomタブメニューを特定の画面にのみ表示させる方法を解説していきます。
Bottomタブの付け方を知らない人は、以下を参考にしてください。
【初心者向き】expoでBottomタブを追加する方法 - プロラブ (abyblog.online)
目次(クリックで読みたい部分にジャンプできます)
元のコード
今回扱うコードは次のようなものです。
const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator
initialRouteName="Login"
screenOptions={{}}
>
<Tab.Screen name="MemoList" component={MemoListScreen} />
<Tab.Screen name="MemoDetail" component={MemoDetailScreen} />
<Tab.Screen name="MemoEdit" component={MemoEditScreen} />
<Tab.Screen name="MemoCreate" component={MemoCreateScreen} />
</Tab.Navigator>
</NavigationContainer>
);
}
現在は4つの全ての画面にBottomタブが適用されています。
特定の画面にのみBottomタブを表示させる
今回は、MemoListScreen MemoDetailScreen MemoEditScreen MemoCreateScreen の4つの画面のうちから、
MemoEditScreen と MemoCreateScreen にはBottomタブを表示させないようにしたいと思います。
Bottomタブを表示させない方法は、
Stack.Screen と Tab.Screen を組み合わせることで実現することができます。
//import 文
const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator
initialRouteName="MemoList"
screenOptions={{}}
>
<Stack.Screen name="MemoList" component={MemoListScreen} />
<Stack.Screen name="MemoDetail" component={MemoDetailScreen} />
<Stack.Screen name="HOME" component={HomeTabs} />//この中にBottomタブを含むスクリーンが入っている。
</Stack.Navigator>
</NavigationContainer>
);
}
function HomeTabs() {
const Tab = createBottomTabNavigator();
return (
<Tab.Navigator
initialRouteName="MemoEdit"
>
<Tab.Screen name="MemoEdit" component={MemoEditScreen} />
<Tab.Screen name="MemoCreate" component={MemoCreateScreen} />
</Tab.Navigator>
);
}
これで、Bottomタブを特定の画面にのみ表示させることができました。
注意点
実装して触っていけばわかると思いますが、
Bottomタブを実装している画面は一つの画面として認識されています。
そのため、Bottomタブで行き来していて、Backボタンを押すと、必ず元のStack.Screenのどこかに戻ります。
Bottomタブで選択した前の画面には戻ることができないです。
対策としては、Backボタンを消すなどが対策になるでしょう。(消し方は次回解説します)
まとめ
今回は、ExpoでBottomタブを特定の画面にのみ表示させる方法について解説していきました。
次回は、Backボタンを消す方法を解説していきます。
では!