開発日記_day6
〜東京国立博物館の所蔵作品をPinterestみたいな感じで見れるWebアプリ作りたい〜
このnoteは、プログラミング超初心者・独学勢の私が、(無謀にも)未経験のReact.jsでWebアプリ開発に取り組んじゃうお話でございます。
果たして本当にWebアプリが完成するのか?
どうぞ、フォローして今後の経過をご覧くださいまし。
前回
https://note.com/sloth_run_sloth/n/ncbb74497e1ce
今日の課題
写経したコードを読み直す
課題のための準備
さてー、本日は、前回とりあえず写経したfetch関数でJASONデータを取得するコードを読み直していきます。
前回写経したコードはこちらです。
import React, { useState, useEffect } from 'react';
const ApiFetch = () => {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch('https://jpsearch.go.jp/api/item/search/jps-cross?keyword=東京国立博物館');
const jsonData = await response.json();
setData(jsonData);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchData();
}, []);
return (
<div>
<h1>API Data</h1>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
};
export default ApiFetch;
状態を管理するためにuseStateフックを使用
まず、Reactコンポーネント内で状態を管理するため、Reactフックの一部であるuseStateを使用しています。公式ドキュメントで使い方を確認します。
下記が該当行です。dataが現在の状態を表す変数、setDataはこの状態を更新するための関数です。APIから取得したデータをdata状態変数に格納し、UIでそのデータを表示するために使用します。
const [data, setData] = useState(null);
ChatGPTの解説でも同様のことが述べられています。
useEffectの中で非同期の関数fetchDataを定義、呼び出し
公式ドキュメントのuseEffectのUsage欄に「Fetching data with Effects」とあります。Reactでfetch関数を用いる時、useEffectを使用してレンダー後にfetch関数を処理するようにしています。
fetchData関数内の処理
const fetchData = async () => {
try {
const response = await fetch('https://jpsearch.go.jp/api/item/search/jps-cross?keyword=東京国立博物館');
const jsonData = await response.json();
setData(jsonData);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchData();
JavaScriptの構文として、await式のエラーはtry …catchできるようです。非同期処理でのエラー処理ということで、今後勉強が必要そうです。
さて、fetch関数内の処理についての説明はChatGPTの力を借りました。
取得したJSONデータを文字列として表示
return (
<div>
<h1>API Data</h1>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
最後に、取得したJSONデータを<pre>要素を用いて文字列として表示します。
具体的な処理は次の通り;
以上が前回写経したコードの内容です。
第一段階クリアしたので、次はUIをもう少し整えたいと思います。例えば、一覧を表にするなど。
明日の課題
UIを整える
この記事が気に入ったらサポートをしてみませんか?