-
useStateとuseEffectを使用する方法:
import React, { useState, useEffect } from 'react'; import axios from 'axios'; const MyComponent = () => { const [data, setData] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await axios.get('https://api.example.com/data'); setData(response.data); } catch (error) { console.error('データのフェッチに失敗しました', error); } }; fetchData(); }, []); return ( <div> {/* データの表示 */} {data ? <p>{data}</p> : <p>データをロード中です...</p>} </div> ); }; export default MyComponent;
-
useReducerを使用する方法:
import React, { useReducer, useEffect } from 'react'; import axios from 'axios'; const initialState = { loading: true, error: null, data: null, }; const reducer = (state, action) => { switch (action.type) { case 'FETCH_SUCCESS': return { loading: false, error: null, data: action.payload }; case 'FETCH_ERROR': return { loading: false, error: action.payload, data: null }; default: return state; } }; const MyComponent = () => { const [state, dispatch] = useReducer(reducer, initialState); useEffect(() => { const fetchData = async () => { try { const response = await axios.get('https://api.example.com/data'); dispatch({ type: 'FETCH_SUCCESS', payload: response.data }); } catch (error) { dispatch({ type: 'FETCH_ERROR', payload: error.message }); } }; fetchData(); }, []); return ( <div> {/* データの表示 */} {state.loading ? ( <p>データをロード中です...</p> ) : state.error ? ( <p>データのフェッチに失敗しました: {state.error}</p> ) : ( <p>{state.data}</p> )} </div> ); }; export default MyComponent;
-
カスタムHookを使用する方法:
import React, { useEffect } from 'react'; import axios from 'axios'; const useDataFetching = (url) => { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await axios.get(url); setData(response.data); setLoading(false); } catch (error) { setError(error.message); setLoading(false); } }; fetchData(); }, [url]); return { data, loading, error }; }; const MyComponent = () => { const { data, loading, error } = useDataFetching('https://api.example.com/data'); return ( <div> {/* データの表示 */} {loading ? ( <p>データをロード中です...</p> ) : error ? ( <p>データのフェッチに失敗しました: {error}</p> ) : ( <p>{data}</p> )} </div> ); }; export default MyComponent;
これらのコード例は、ReactでAxiosを使用してデータをフェッチするためのいくつかの一般的な方法を示しています。適切な方法を選択し、プロジェクトの要件に合わせてカスタマイズしてください。