Table of Content
ReactNavigator
React Nativeでルーティングを設定するのにReactNavigatorというライブラリがよく使われます。
他にもいくつかライブラリがあるようですが、最近はReactNavigatorが最も使われているようです。
まずはライブラリをインストール
npm install react-navigation --save
2つのスクリーンを切り替えるTab形式のNavigationを作ります。
import React, { Component } from 'react'; import { Text, View } from 'react-native'; import { TabNavigator } from 'react-navigation'; // 1.0.0-beta.27 //HomeScreenを定義します。 class HomeScreen extends Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Home!</Text> </View> ); } } //SettingsScreenを定義します。 class SettingsScreen extends Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Settings!</Text> </View> ); } } //TabNavigatorを定義しエクスポートします。上で定義したHomeScreenとSettingScreenの2つをTabで切り替えられるようにします。 //上に書いたHomeが優先的に表示されます。 export default TabNavigator( { Home: { screen: HomeScreen }, Settings: { screen: SettingsScreen }, } );
ScreenクラスとNavigationクラスのファイルを分ける場合、
App.jsは下のようになります。
import React, { Component } from 'react'; import { Text, View } from 'react-native'; import MainTabNavigator from './navigation/MainTabNavigator'; export default class App extends Component { render() { return ( <MainTabNavigator /> ); } }
navigationフォルダを作成して、
import React from 'react'; import { TabNavigator } from 'react-navigation'; import HomeScreen from '../screens/HomeScreen'; import SettingsScreen from '../screens/SettingsScreen'; export default TabNavigator( { Home: { screen: HomeScreen, }, Settings: { screen: SettingsScreen, }, }, )
HomeScreenは、screensフォルダの下に作成して、
import React, { Component } from 'react'; import { View, Text } from 'react-native'; class HomeScreen extends Component { render() { return ( <View style={styles.container}> <Text>Home</Text> </View> ); } } const styles = { container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, };
SettingsScreenも同様に作成しましょう。
1点注意は、App.jsで、return ( <MainTabNavigator />)を<View>タグ等で括ってはいけません。例えば、return ( <View> <MainTabNavigator /></View>)はダメです。
2019年4月4日
[…] [ReactNative]React Navigatorの基本 […]