App.tsx 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import 'react-native-gesture-handler';
  2. import * as React from 'react';
  3. import { DevSettings } from 'react-native';
  4. import AsyncStorage from '@react-native-community/async-storage';
  5. import ReactNavigation4Example from './ReactNavigation4Example';
  6. import SimpleExample from './SimpleExample';
  7. const STORAGE_KEY = 'rnsac-current-example';
  8. export default function App() {
  9. const [currentExample, setCurrentExample] = React.useState<string | null>(
  10. null,
  11. );
  12. React.useEffect(() => {
  13. async function loadCurrentExample() {
  14. const example = await AsyncStorage.getItem(STORAGE_KEY);
  15. setCurrentExample(example ?? 'simple');
  16. }
  17. loadCurrentExample();
  18. }, []);
  19. React.useEffect(() => {
  20. async function saveCurrentExample() {
  21. if (currentExample != null) {
  22. await AsyncStorage.setItem(STORAGE_KEY, currentExample);
  23. }
  24. }
  25. saveCurrentExample();
  26. }, [currentExample]);
  27. React.useEffect(() => {
  28. DevSettings.addMenuItem('Show Simple Example', () => {
  29. setCurrentExample('simple');
  30. });
  31. DevSettings.addMenuItem('Show React Navigation 4 Example', () => {
  32. setCurrentExample('react-navigation-4');
  33. });
  34. }, []);
  35. switch (currentExample) {
  36. case 'simple':
  37. return <SimpleExample />;
  38. case 'react-navigation-4':
  39. return <ReactNavigation4Example />;
  40. default:
  41. return null;
  42. }
  43. }