0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Reactでapiのデータを取得してHTML要素として表示したい

Posted at

概要

よくあるタスクであるReactでapiのデータを取得してHTML要素として表示したいと思ったのでやってみました。

コード内容

基礎的なコード
import { useEffect, useState } from "react";

function FetchSample() {
  const [data, setData] = useState(undefined);

  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/todos")
      .then((res) => res.json())
      .then((json) => {
        setData(json);
      })
      .catch(() => alert("error"));
  }, []);

  return (
    <>
      {data === undefined
        ? ""
        : data.map((da) => <div key={da.id}>{`${da.id} ${da.title}`}</div>)}
    </>
  );
}

export default FetchSample;

useEffect を使ってfetchし、setData でdataに取得したものを入れます。
少し工夫したのは、dataが取得できるまでHTML側に何も表示しないようにするところでしょうか。
例えばliをmapでループさせる時、データが取得できるまで空のulタグが出てしまうとか、そういう状況がありそうだなとおもい気持ち悪いので、データが取得できてから必要なものを出力するようにしました。

おわりに

ほんとに基礎的なコードを記載しましたが、おそらくこの記載方法は、今はほとんどしないのかなと思います。
AIに聞いたらloadingやerror状態をreturn文を分けたりしてたり、こちらの動画では、AbortController()というのを使って連続したデータ取得が起こった時のケアをしたりしていました。
あとはuseSWRとかも使ってみたいです。

よくある基礎的なものほど、いろいろやり方があり、ベストプラクティスが見つけにくいなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?