A manapság létrehozott alkalmazások többsége külső forrásokból származó adatokat használ fel API-kon keresztül. Adatokat kérnek le egy szerverről, és megjelenítik a felhasználói felületükön.

A React használatával egyéni hookot hozhat létre adatok lekéréséhez egy API-ból. Adott URL-címmel ez a hook egy objektumot ad vissza, amely tartalmazza az adatokat és egy opcionális hibaüzenetet. Ezt a horgot ezután egy alkatrészben használhatja.

Egyéni React Hook létrehozása

Kezdje egy új, useFetch.js nevű fájl létrehozásával. Ebben a fájlban hozzon létre egy useFetch() nevű függvényt, amely elfogad egy URL-karakterláncot paraméterként.

const useFetch = (url) => {
}

A horog kell kezdeményezze az API-hívást közvetlenül a hívás után. Használhatja a useEffect() hook ezért.

A tényleges API-hívásokhoz használja a fetch API-t. Ez az API egy ígéret alapú interfész, amely lehetővé teszi, hogy HTTP-n keresztül aszinkron módon kérjen és fogadjon válaszokat.

A useFetch() egyéni hook-ban adja hozzá a következőket.

import { useEffect, useState } tól től "reagál";

const useFetch = (url) => {
const [data, setdata] = useState(nulla);
const [loading, setloading] = useState(igaz);
const [hiba, seterror] = useState("");

useEffect(() => {
lekérni (url)
.then((res) => res.json())
.then((data) => {
szeterror(adat.hiba)
setdata(adat.tréfa)
setloading(hamis)
})
}, [url]);

Visszatérés { adat, betöltés, hiba };
};

exportalapértelmezett useFetch;

Ebben a hookban először három érték állapotát inicializálja:

  • adatok: Az API-választ tartalmazza.
  • error: Hibaüzenetet tárol, ha hiba történik.
  • loading: Logikai értéket tartalmaz, amely jelzi, hogy lekérte-e az API-adatokat. Inicializálja a betöltési állapotot true-ra. Miután az API visszaküldi az adatokat, állítsa be hamis értékre.

A useEffect() hook az URL karakterláncot veszi argumentumként. Ez annak biztosítására szolgál, hogy az URL minden alkalommal lefusson.

A useFetch() függvény egy objektumot ad vissza, amely tartalmazza az adatokat, a betöltési és a hibaértékeket.

React Custom Hook használata

Az imént létrehozott useFetch() egyéni hook használatához először importálja azt:

const useFetch = igényelnek("./useFetch")

Ezután használja az alábbiak szerint:

const {adat, betöltés, hiba} = useFetch (url)

Ennek bemutatásához vegye figyelembe a következő viccek összetevőt:

const Viccek = () => {
const url = "<https://sv443.net/jokeapi/v2/joke/Programming? típus=egyetlen>";
const { adat, betöltés, hiba } = useFetch (url);

ha (Betöltés) Visszatérés (
<div>Betöltés...</div>
)

Visszatérés (
<div>
{hiba &&<div>{hiba}</div>}
{adat &&<div>{<div>{adat}</div>}</div>}
</div>
);
};

exportalapértelmezett Viccek;

Meghívja a useFetch() hook-ot a viccek API URL-jével, és megkapja az adatokat, a betöltési és a hibaértékeket.

A Viccek komponens megjelenítéséhez először ellenőrizze, hogy a Betöltés igaz-e. Ha igen, akkor jelenítse meg a „Betöltés…” utasítást, ellenkező esetben jelenítse meg az adatokat és a hibaüzenetet, ha van ilyen.

Miért érdemes egyéni reakcióhorgokat használni?

Ahogy ebben az összetevőben használta a useFetch() egyéni hook-ot, újra felhasználhatja más összetevőkben is. Ez annak a szépsége, hogy a logikát külső elemekbe helyezzük ahelyett, hogy az egyes összetevőkbe írnánk.

A horgok a React egyik hatékony funkciója, amellyel javíthatja kódja modularitását.