【React】外部API(JSON)を取得して表示する方法
Reactで外部API(JSON)を取得して表示する方法を紹介します。
今回は、ポケモンAPIで実際に取得して表示します。
Reactで外部API(JSON)を取得して表示する方法
ファイル構成
src
∟App.js
∟index.js
∟components
∟Card
∟Card.js
∟utils
get.js
App.jsでループして外部API(JSON)を取得した分だけCardを作成する構成とします。
index.js
上でAppを読み込みます。
index.jsは特にいじるところはありません。
App.js
ポケモンのAPIについて、https://pokeapi.co/が提供サイトです。
こちらから、JSONが返されるurlを探して、エンドポイントを設定します。
useEffectでは、最初だけ発火してほしいので、空の配列を第二引数に指定します。
非同期でデータを取得してくるので、async-awaitを使います。
async-awaitを使うことで、データの取得が完了した場合に、それ以降の処理が実行されます。
loadPokemon関数で使用しているPromise.all()メソッドを使うことで、非同期処理を並列で処理することができるようになります。全部とってくるまで待つという非同期の処理です。詳しくは、次の記事を参照してみてください。
loadPokemon関数では、新しいオブジェクトに取得したデータを格納して、それを更新用関数にセットすることで状態が変化します。
JSX部分では、Cardコンポーネントにpokemonのデータをpropsとして渡します。
utils/get
urlエンドポイントを引数にとり、Promiseを使って、処理します。
resは、jsonデータが格納されているresponseオブジェクトです。
jsonデータをJavaScriptオブジェクトにするためには、json()メソッドを使います。
components/Card/Card.js
App.jsから渡されたpropsを分割代入して、pokemonとして受け取ります。
あとは、オブジェクトを確認して、それぞれ必要なプロパティを順次設定していくだけです。