1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| import React from 'react'; import { Button, Text, View } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; // Version can be specified in package.json import { StackNavigator, TabNavigator, TabBarBottom } from 'react-navigation'; // Version can be specified in package.json
class HomeScreen extends React.Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Home!</Text> <Button title="Go to Settings" onPress={() => this.props.navigation.navigate('Settings')} /> <Button title="Go to Details" onPress={() => this.props.navigation.navigate('Details')} /> </View> ); } }
class SettingsScreen extends React.Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Settings!</Text> <Button title="Go to Home" onPress={() => this.props.navigation.navigate('Home')} /> <Button title="Go to Details" onPress={() => this.props.navigation.navigate('Details')} /> </View> ); } }
class DetailsScreen extends React.Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Details!</Text> </View> ); } }
const HomeStack = StackNavigator({ Home: { screen: HomeScreen }, Details: { screen: DetailsScreen }, });
const SettingsStack = StackNavigator({ Settings: { screen: SettingsScreen }, Details: { screen: DetailsScreen }, });
export default TabNavigator( { Home: { screen: HomeStack }, Settings: { screen: SettingsStack }, }, { navigationOptions: ({ navigation }) => ({ tabBarIcon: ({ focused, tintColor }) => { const { routeName } = navigation.state; let iconName; if (routeName === 'Home') { iconName = `ios-information-circle${focused ? '' : '-outline'}`; } else if (routeName === 'Settings') { iconName = `ios-options${focused ? '' : '-outline'}`; }
// You can return any component that you like here! We usually use an // icon component from react-native-vector-icons return <Ionicons name={iconName} size={25} color={tintColor} />; }, }), tabBarComponent: TabBarBottom, tabBarPosition: 'bottom', tabBarOptions: { activeTintColor: 'tomato', inactiveTintColor: 'gray', }, animationEnabled: false, swipeEnabled: false, } );
|