ReactNavigation4Example.tsx 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import * as React from 'react';
  2. import { View, Text, Button } from 'react-native';
  3. import { createAppContainer } from 'react-navigation';
  4. import { createBottomTabNavigator } from 'react-navigation-tabs';
  5. import {
  6. createStackNavigator,
  7. NavigationStackProp,
  8. } from 'react-navigation-stack';
  9. import { SafeAreaProvider } from 'react-native-safe-area-context';
  10. type NavigationScreenProps = {
  11. navigation: NavigationStackProp<{}, {}>;
  12. };
  13. function HomeScreen({ navigation }: NavigationScreenProps) {
  14. return (
  15. <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
  16. <Text>Home Screen</Text>
  17. <Button
  18. title="Go to Details"
  19. onPress={() => navigation.navigate('Details')}
  20. />
  21. </View>
  22. );
  23. }
  24. function SettingsScreen({ navigation }: NavigationScreenProps) {
  25. return (
  26. <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
  27. <Text>Settings Screen</Text>
  28. <Button
  29. title="Go to Details"
  30. onPress={() => navigation.navigate('Details')}
  31. />
  32. </View>
  33. );
  34. }
  35. const TabNavigator = createBottomTabNavigator({
  36. Home: HomeScreen,
  37. Settings: SettingsScreen,
  38. });
  39. function DetailsScreen({ navigation }: NavigationScreenProps) {
  40. return (
  41. <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
  42. <Text>Details Screen</Text>
  43. <Button
  44. title="Go to Details... again"
  45. onPress={() => navigation.push('Details')}
  46. />
  47. <Button title="Go to Home" onPress={() => navigation.navigate('Home')} />
  48. <Button title="Go back" onPress={() => navigation.goBack()} />
  49. </View>
  50. );
  51. }
  52. const AppNavigator = createStackNavigator(
  53. {
  54. Tabs: TabNavigator,
  55. Details: DetailsScreen,
  56. },
  57. {
  58. initialRouteName: 'Tabs',
  59. },
  60. );
  61. const AppContainer = createAppContainer(AppNavigator);
  62. export default function ReactNavigation4Example() {
  63. return (
  64. <SafeAreaProvider>
  65. <AppContainer />
  66. </SafeAreaProvider>
  67. );
  68. }