# React NativeでBottom Tabs Navigatorを使用しタブナビゲーションを実装する

Table of Contents

スマホアプリでよく見るボトムメニューをReact Nativeで導入するには、Bottom Tabs Navigatorというパッケージをインストールする必要がある。

ちなみにナビゲーションには他にもStack Navigatorというものもあり、こちらは一覧画面から詳細画面への遷移等に用いられるらしい。

詳細は↓に引用した。

StackNavigator

StackNavigatorは主にはアプリにおける「一覧画面」と「詳細画面」のような関係性がある画面間の遷移の用いられます。特徴として画面が手前に積み重なっていくような挙動をし、iOSの右スワイプ(画面の左端を掴んで右にスワイプ)やAndroidの戻るボタンで1つ前の画面に戻ることができます。

【RN】StackとBottomTabNavigatorを組み合わせたサンプル

BottomTabNavigator

アプリにおいて機能がいくつかのカテゴリに分かれている場合にBottomTabNavigatorは用いられます。TwitterやFacebookやInstagramなど、多機能なアプリは大概このBottomTabNavigatorで画面制御を行っています。

【RN】StackとBottomTabNavigatorを組み合わせたサンプル

実践していく

まずは移動するページが欲しいので、

mkdir src
mkdir src/screens
touch src/screens/Sample.tsx

適当に作成する。

Sample.tsx

import React from "react";
import { ScrollView, View, Text } from "react-native";
const Sample = () => {
return (
<ScrollView>
<View>
<Text>Sample</Text>
</View>
</ScrollView>
)
}
export default Sample;

こんな感じになる。

ちなみに、divに相当するものがViewコンポーネントで、pタグに相当するのがTextコンポーネント。そしてScrollViewはコンテンツをスクロールできるようにするもの。

作成したページをApp.tsxで読み込む。

import Sample from './src/screens/Sample'
export default function App() {
return (
<Sample />
)
}

同様にSample2とかを作成する。

ただこの時点でApp.tsxに読み込むのは。SampleSample2のどちらか一方でいい。

必要なパッケージをインストールする

npm install @react-navigation/native
npx expo install react-native-screens react-native-safe-area-context
npm install @react-navigation/bottom-tabs

上記インストール後にApp.tsxを下記のように変更する。

import { NavigationContainer } from '@react-navigation/native'
import Sample from './src/screens/Sample'
import Sample2 from './src/screens/Sample2';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
export default function App() {
return (
<Tab.Navigator>
<Tab.Screen
name="Sample"
component={Sample}
/>
<Tab.Screen
name="Sample2"
component={Sample2}
/>
</Tab.Navigator>
)
}

これでタブは完成した。

実機で確認することでページ遷移していることを確認できる。

カスタマイズの例

アイコンの付与

タブにアイコンを付与するには、

import { iconType } from "@expo/vector-icons";でアイコンをインストールし、

<Tab.Screen
name="FromGift"
component={FromGift}
options={{
title: "Give",
tabBarIcon: ({ color, size }) => (
<SimpleLineIcons name="present" color={color} size={size} />
),
}}
/>

Tabにオプションを追加する。

スタイルの変更

キーワード内容
headerStyleヘッダーのスタイルを記述する部分
headerTintColorヘッダーのタイトルの色
headerTitleStyleヘッダータイトルのスタイルを記述する部分
tabBarStyle下方のタブのスタイルを記述する部分
tabBarInactiveTintColorタブバーアイコンの色
tabBarActiveTintColorタブバーのアクティブ(表示されている方)の色
<Tab.Navigator
screenOptions={{
headerStyle: {
backgroundColor: "#666",
},
headerTintColor: "#fff",
headerTitleStyle: {
fontWeight: "bold",
},
tabBarStyle: {
backgroundColor: "#666",
},
tabBarInactiveTintColor: "#ffffff88",
tabBarActiveTintColor: "#fff",
}}
>

こんな感じでスタイルも変更できる。

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

Comments