React Hooks + Suspense + fetch で api からデータ取得

react

前回、React Hooks + Suspense でコード上のデータを setTimeout() を用いて、非同期として取得しました。

React Hooks + Suspense を試す
https://nomad.office-aship.info/react-hooks-suspense

今回、fetch API を使い、サーバーから json を取得し、表示してみます。

適当なjsonを返すサーバーとして以下を選びました。
https://jsonplaceholder.typicode.com/todos

こいつの title を抜き出して、表示させてみます。

修正するポイントとしては、前回のコードのうち
const fetchTodoList の部分を以下に置き換えるだけです。

const fetchTodoList = () => {
  const promise = new Promise((resolve, reject) => {
      fetch("https://jsonplaceholder.typicode.com/todos")
        .then(response => {
            if (!response.ok) {
                console.error("エラーレスポンス", response);
            } else {
                response.json().then(data => {
                    let array: string[] = []

                    data.forEach((dict: { [key: string]: string; }) => {
                      array.push(dict.title)
                    });

                    resolve(array)
                });
            }
        }).catch(error => {
            console.error(error);
        });
  });

  return wrapPromise(promise);
};

成功すると以下のように表示されます。

サスペンスを使ったデータ取得について

Suspense for Data Fetching (Experimental)
https://reactjs.org/docs/concurrent-mode-suspense.html

サスペンスを使ったデータ取得(実験的機能)
https://ja.reactjs.org/docs/concurrent-mode-suspense.html

コメント

タイトルとURLをコピーしました