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の基本 […]