ExpoでReact Navigationを利用したアプリをPWA化する

App.js

import { StatusBar } from "expo-status-bar";
import { StyleSheet, Text, View } from "react-native";
import { NavigationContainer } from "@react-navigation/native";
import { createStackNavigator } from "@react-navigation/stack";
import HomeScreen from "./screens/HomeScreen";
import NextScreen from "./screens/NextScreen";

import * as serviceWorkerRegistration from "./src/serviceWorkerRegistration";

const Stack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="HomeScreen" component={HomeScreen} />
        <Stack.Screen name="NextScreen" component={NextScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

serviceWorkerRegistration.register();

HomeScreen.js

import { View, Text, Button } from "react-native";

export default function HomeScreen({ navigation }) {
  return (
    <View>
      <Text>Home Screen</Text>
      <Button
        title="Next Screen"
        onPress={() => navigation.navigate("NextScreen")}
      />
    </View>
  );
}

NextScreen.js

import { Text } from "react-native";

export default function App() {
  return <Text>NextScreen</Text>;
}

 

React Navigationに関連したライブラリをインストールします。

npx expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view

 

npx expo install @expo/metro-runtime

これで

npx expo start

ののちに、『w』で webで開くことができます。

 

次にPWA化する(PWA化の記事参照)

 

ローカルサーバーを立ち上げる

npx serve web-build --single