前回、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
コメント