Phoenix とExpoで作るスマホアプリ ⑤ expo セットアップ編
Phoenix とExpoで作るスマホアプリ ①Phoenix セットアップ編 + phx_gen_auth
Phoenix とExpoで作るスマホアプリ ②JWT認証+CRUD編
Phoenix とExpoで作るスマホアプリ ③ファイルアップロード編
Phoenix とExpoで作るスマホアプリ ④多対多のリレーション編
Phoenix とExpoで作るスマホアプリ ⑤ expo セットアップ編 <- 本記事
前回は多対多のリレーションを実装しました
今回はexpoのセットアップとベースとなるスクリーン・タブを実装していこうと思います
Install
以下のコマンドで一発です簡単ですね
npm install --global expo-cli
プロジェクト作成
ではプロジェクトを作成していきましょう
以下のコマンドで生成ウィザードが出てきます
expo init sns
使用するテンプレートを聞かれるので今回はmanaged workflowのblankを選択
typescriptだったりtabsをどう実装しているのかを見たい場合は下の項目を選択してください
更に下にbare workflowもありますが、こちらはexpoではなく素のreact nativeでexpoのツールキットを使用するものなので今回は使用しません
- Managed workflow -----
❯ blank a minimal app as clean as an empty canvas
blank (TypeScript) same as blank but with TypeScript configuration
tabs (TypeScript) several example screens and tabs using react-navigation
フォルダ構成
フォルダ構成は以下のようにしていきます
atomic designを使用して開発していく場合はcomponentsやscreenの下で
atom,molecules等更にフォルダを作成していきましょう
- api サーバーとの通信や外部APIを叩く処理
- assets 画像関連
- components 共通コンポーネント
- context useContext関連
- hooks customHooks関連
- navigation react-navigation関連
- screens 各ページとページ毎のcomponent
|- Home
|- atom
|- molecules
|- organisms
- App.js main
使用するライブラリ
本記事で追加するライブラリになります
他の記事で別のライブラリも追加される可能性があります
- ナビゲーション
react-navigation
デファクト - UIライブラリ
react-native-elements
native-baseもありますが、カスタムしやすいのとドキュメントもスッキリしてて読みやすいのでこちらを使用します - ユーティリティ
axios
非同期通信
form-data
ファイルとかを送信するのに使用します
expo install @react-navigation/native @react-navigation/bottom-tabs
expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view
expo install react-native-elements react-native-vector-icons
expo install axios form-data
Tabの実装
認証機能に取り掛かる前にベースとなるスクリーンとタブを実装していきましょう
//[new] screens/HomeScreen.js
import React from "react";
import { View, Text, StyleSheet } from "react-native";
const HomeScreen = () => {
return (
<View style={styles.container}>
<Text>HomeScreen</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
justifyContent: "center",
alignSelf: "center",
flex: 1,
},
});
export default HomeScreen;
HomeのところをAccountに変えてAccountScreen.jsも作成しましょう
ベースとなるスクリーンを作成しましたので次にTabを実装します
NavigationContainerを作成してその下にTabやStackのNavigationを配置していきます
// [new] navigation/AppNavigator.js
import React from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import HomeScreen from "../screens/HomeScreen";
import AccountScreen from "../screens/AccountScreen";
const AppNavigator = () => {
const Tab = createBottomTabNavigator();
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Account" component={AccountScreen} />
</Tab.Navigator>
</NavigationContainer>
);
};
export default AppNavigator;
これでタブができたので実際に表示しましょう
App.jsで作成したAppNavigatorを表示します
背景が白なのでStatusBarが見えなくなるのでstyleをdarkにします
// [edit] App.js
import { StatusBar } from "expo-status-bar";
import React from "react";
import AppNavigator from "./navigation/AppNavigator";
export default function App() {
return (
<>
<StatusBar style="dark" />
<AppNavigator />
</>
);
}
これでタブが実装完了しました
動作確認をしてみましょう
動作確認
expo start でサーバーを起動させて
iosかandroidお好きな方で確認してみましょう
無事ベースとなるスクリーンとタブが実装されているのが確認できました
今回はここまでになります
次回は認証機能を実装していきます
今回の差分
https://github.com/thehaigo/sns-expo/commit/11eacba9edea7d8eead81e534bf56b417cbf2036
参考サイト
https://reactnavigation.org/docs/getting-started
https://reactnativeelements.com/docs/
https://github.com/axios/axios
https://github.com/form-data/form-data#readme
https://docs.expo.io/
Author And Source
この問題について(Phoenix とExpoで作るスマホアプリ ⑤ expo セットアップ編), 我々は、より多くの情報をここで見つけました https://qiita.com/the_haigo/items/ef9181ebeb2406ec8903著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .