【簡単にテンプレで実装】react-navigationを導入してみた
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
React-Native の expo で React-Navigation を導入した方法についてまとめました。
React-Navigation とは
React-Navigationの挙動はこんな感じ! pic.twitter.com/pdKThegXBr
— まっつん🍞ホームベーカリーLv11🍞 (@mattun_evo) November 28, 2019
Header や、メニュータブ、戻るボタンとかを爆速で実装できて、ページをプレスで掘り進む際にスライドのアニメーションを簡単につけることができます。
ナビゲーション系のライブラリは絶対に使うレベルなのかな?と思いますので、備忘録がわりに記事を作ります。
バージョン
これを実装したのは、2019年11月29日時点です。
React-Native はライブラリ含めるととてつもない更新頻度なので、version の確認お願いします。
$ expo --version
3.4.1
React-Navigation version 4.x
インストール
インストールするものは多いです。
npm install react-navigation
//今回使用するやつ
npm install react-navigation-stack
/過去バージョンでは一体化していたものが、分別されたので忘れずにインストールしてください
npm install react-navigation-tabs
//上と同様。メニュータブがほしい人はこれ。
実際のコード
上記3つをインポートして使います。
使い方は、公式ページを参考にして・・・
App.js
import { createAppContainer } from "react-navigation"
import { createStackNavigator } from "react-navigation-stack"
import { createBottomTabNavigator } from "react-navigation-tabs"
import HomeScreen from "./src/screens/HomeScreen"
import ContentScreen from "./src/screens/ContentScreen"
import MyPageScreen from "./src/screens/MyPageScreen"
const HomeStack = createStackNavigator({
Home: { screen: HomeScreen },
Content: { screen: ContentScreen }, // navigationOption: { headerTitle: 'Mr&MrsSnapshot' }
})
const SettingsStack = createStackNavigator({
MyPage: { screen: MyPageScreen },
})
export default createAppContainer(
createBottomTabNavigator(
{
Home: { screen: HomeStack },
Settings: { screen: SettingsStack },
},
{}
)
)
コードとディレクトリ構成を見ていただければ予想はつくと思います。
タブにそれぞれ const で名前をつけて、それぞれ遷移させたいページ、階層をもたせたいページを書いていきます。
タブの数が増えれば export default 内の項目が増えますし、
階層を増やす場合は、createStackNavigator 内の項目が増えていきます。
一度設定してしまえば本当に楽チンです!!
アレンジしたい場合
navigationOption: {
headerTitle: "Mr&MrsSnapshot"
}
や
tabBarOptions: { activeTintColor: 'tomato', inactiveTintColor: 'gray', }
などを追記すると様々なアレンジをすることができます。
これはぜひ公式を見ながら自分のナビゲーションを作って見てください!
以降、僕のコードです。ぜひ参考にしてください。
import React from "react"
import { StyleSheet, Text, View } from "react-native"
import { createAppContainer } from "react-navigation"
import { createStackNavigator } from "react-navigation-stack"
import { createBottomTabNavigator } from "react-navigation-tabs"
import HomeScreen from "./src/screens/HomeScreen"
import ContentScreen from "./src/screens/ContentScreen"
import MyPageScreen from "./src/screens/MyPageScreen"
const HomeStack = createStackNavigator(
{
Home: { screen: HomeScreen },
Content: { screen: ContentScreen }, // navigationOption: { headerTitle: 'Mr&MrsSnapshot' }
},
{
defaultNavigationOptions: {
headerTitle: "Mr&MrsSnapshot",
headerTintColor: "black",
},
}
)
const SettingsStack = createStackNavigator(
{
// Home: { screen: HomeScreen },
MyPage: { screen: MyPageScreen },
},
{
defaultNavigationOptions: {
headerTitle: "Mr&MrsSnapshot",
headerTintColor: "black",
},
}
)
export default createAppContainer(
createBottomTabNavigator(
{
Home: { screen: HomeStack },
Settings: { screen: SettingsStack },
},
{
// You can return any component that you like here!
//ここまでヘッダーとか
tabBarOptions: {
activeTintColor: "tomato",
inactiveTintColor: "gray",
}, //以下メニュー
}
)
)
まとめ
以上です。
ReactNativeNavigation についてまとめてみました。
誰かの参考になればと思います。
感想・苦情は TwitterDM にご連絡ください。