ReactNavigation5Example.tsx 2.1KB

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