React Nativeでアプリを開発する際、APIとの通信は必須です。データを取得・送信することで、動的なコンテンツを扱えるようになります。
本記事では、React NativeでAPI通信を実装する方法を、「fetch」と「Axios」の2つの手法を比較しながら解説します!
1. React NativeでAPI通信をする方法
React Nativeでは、Webと同じようにAPI通信が可能です。
主に使われるのは以下の2つの方法です。
✅ fetch API(ネイティブのAPI)
✅ Axios(外部ライブラリ)
2. fetchを使ったAPI通信(基本編)
fetch() はブラウザ標準の関数で、React Nativeでもそのまま利用できます。
📌 GETリクエスト(データ取得)
まずは、APIからデータを取得する基本の書き方を見てみましょう。
import React, { useEffect, useState } from "react";
import { View, Text, ActivityIndicator, StyleSheet } from "react-native";
export default function App() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => response.json())
.then((json) => {
setData(json);
setLoading(false);
})
.catch((error) => console.error(error));
}, []);
return (
<View style={styles.container}>
{loading ? <ActivityIndicator size="large" /> : <Text>{data?.title}</Text>}
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
},
});
✅ ポイント
fetch()を使ってAPIからデータを取得response.json()でレスポンスをJSONに変換useEffectを使ってコンポーネントがマウントされたときにリクエストを送るActivityIndicatorでローディング処理を追加
📌 POSTリクエスト(データ送信)
APIにデータを送信するには、fetch() のオプションに method: "POST" を指定します。
fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "React Native API通信",
body: "fetchを使ったPOSTリクエスト",
userId: 1,
}),
})
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.error(error));
✅ ポイント
method: "POST"を指定headersに"Content-Type": "application/json"をセットbodyにJSON.stringify()でデータを送信
fetchを使えば、簡単にAPI通信ができる!
3. Axiosを使ったAPI通信(簡単&便利!)
fetch() でもAPI通信はできますが、Axios を使うとよりシンプルで使いやすくなるのでおすすめです。
📌 Axiosのメリット
✅ fetch() よりシンプルなコードで書ける
✅ エラーハンドリングが簡単
✅ GET や POST だけでなく、PUT や DELETE も直感的
📌 Axiosのインストール
まずは Axios をインストールします。
npm install axios
または
yarn add axios
📌 GETリクエスト(データ取得)
import React, { useEffect, useState } from "react";
import { View, Text, ActivityIndicator, StyleSheet } from "react-native";
import axios from "axios";
export default function App() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
axios
.get("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => {
setData(response.data);
setLoading(false);
})
.catch((error) => console.error(error));
}, []);
return (
<View style={styles.container}>
{loading ? <ActivityIndicator size="large" /> : <Text>{data?.title}</Text>}
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
},
});
✅ fetchと比べて簡潔なコード!
📌 POSTリクエスト(データ送信)
Axiosを使ったPOSTリクエストの書き方は非常にシンプルです。
axios
.post("https://jsonplaceholder.typicode.com/posts", {
title: "Axiosで送信",
body: "Axiosを使ったPOSTリクエスト",
userId: 1,
})
.then((response) => console.log(response.data))
.catch((error) => console.error(error));
✅ axios.post(URL, データオブジェクト) だけでOK!
4. fetchとAxiosの比較(どっちを使うべき?)
| 特徴 | fetch | Axios |
|---|---|---|
| 標準API | ✅(組み込み) | ❌(外部ライブラリ) |
| コードの簡潔さ | ❌(やや冗長) | ✅(シンプル) |
| エラーハンドリング | ❌(手動で書く) | ✅(自動で対応) |
| リクエストの設定 | ❌(毎回書く) | ✅(デフォルト設定可能) |
✅ 結論:どっちを使う?
- シンプルな処理なら
fetch - より簡潔で使いやすいコードにしたいなら Axios
5. まとめ:React NativeのAPI通信をマスターしよう!
✅ fetch は標準機能で使いやすいが、やや記述が冗長
✅ Axios は簡潔な記述&エラーハンドリングが便利
✅ GET、POSTだけでなく、PUT、DELETEも活用可能
🚀 API通信を活用して、動的なアプリを作ろう! 🎉


コメント