Javascript (React_fetchのサンプル)

■fetch関数の試し。
Reactの参考書を借りて少し読んだらfetch関数に目が止まった。外部APIを使ってjsonデータの取得をすれば、そういう公開をしているサイトからデータ取得できるので利用の幅は広いと思う。今回、python -m http.server でサーバを立てて、そこのjsonデータにアクセス。

まず、Reactのコード。

import { useEffect, useState } from "react";

//===Loading...を表示させるためのsleep========
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

export default function FetchSample() {
    const [data, setData] = useState(null);
    const [error, setError] = useState(null);

    useEffect(() => {
        fetch("/data.json")
            .then(res => {
                if (!res.ok) throw new Error("Network error");
                return res.json();
            })
            //===================================
            .then(json =>
                sleep(3000).then(() => json)
            )
            //===================================
            .then(json => setData(json))
            .catch(err => setError(err.message));
    }, []);

    if (error) return <div>Error: {error}</div>;
    if (!data) return <div>Loading...</div>;

    return (
        <div>
            <h3>{data.message}</h3>
            <ul>
                {data.items.map(v => (
                    <li key={v}>{v}</li>
                ))}
            </ul>
        </div>
    );
}

次にjsonデータ。

{
  "message": "Hello from http.server",
  "items": [1, 2, 3, 4]
}

これらをコマンドプロンプトから実行させた結果が下(Chromeブラウザ)。まず、初めに描画された瞬間はdataが初期値のnullになっているので、Loading...の表示。

sleepで指定した3秒が経過したら、fetchで取得したデータがsetDataで更新されるのでここで再描画される。jsonデータが表示されていることが分かる。

Open-MeteoとかのフリーのAPIのURLに設定しても問題なく情報は取得できた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です