Reageer persoonlike hake
Hakies is herbruikbare funksies.
Wanneer jy komponentlogika het wat deur veelvuldige komponente gebruik moet word, kan ons daardie logika na 'n pasgemaakte Hook onttrek.
Gepasmaakte hake begin met "gebruik". Voorbeeld: useFetch
.
Bou 'n haak
In die volgende kode haal ons data in ons Home
komponent en vertoon dit.
Ons sal die JSONPlaceholder -diens gebruik om vals data te gaan haal. Hierdie diens is ideaal om toepassings te toets wanneer daar geen bestaande data is nie.
Om meer te wete te kom, kyk na die JavaScript Fetch API- afdeling.
Gebruik die JSONPlaceholder-diens om vals "todo"-items te gaan haal en die titels op die bladsy te vertoon:
Voorbeeld:
index.js
:
import { useState, useEffect } from "react";
import ReactDOM from "react-dom";
const Home = () => {
const [data, setData] = useState(null);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/todos")
.then((res) => res.json())
.then((data) => setData(data));
}, []);
return (
<>
{data &&
data.map((item) => {
return <p key={item.id}>{item.title}</p>;
})}
</>
);
};
ReactDOM.render(<Home />, document.getElementById("root"));
Die haallogika kan ook in ander komponente nodig wees, so ons sal dit in 'n pasgemaakte Hook onttrek.
Skuif die haallogika na 'n nuwe lêer om as 'n pasgemaakte Hook gebruik te word:
Voorbeeld:
useFetch.js
:
import { useState, useEffect } from "react";
const useFetch = (url) => {
const [data, setData] = useState(null);
useEffect(() => {
fetch(url)
.then((res) => res.json())
.then((data) => setData(data));
}, [url]);
return [data];
};
export default useFetch;
index.js
:
import ReactDOM from "react-dom";
import useFetch from "./useFetch";
const Home = () => {
const [data] = useFetch("https://jsonplaceholder.typicode.com/todos");
return (
<>
{data &&
data.map((item) => {
return <p key={item.id}>{item.title}</p>;
})}
</>
);
};
ReactDOM.render(<Home />, document.getElementById("root"));
Voorbeeld Verduidelik
Ons het 'n nuwe lêer geskep met die naam wat ' useFetch.js
n funksie genaamd useFetch
bevat wat al die logika bevat wat nodig is om ons data te gaan haal.
Ons het die hardgekodeerde URL verwyder en dit vervang met 'n url
veranderlike wat na die pasgemaakte Hook oorgedra kan word.
Laastens gee ons ons data terug vanaf ons Hook.
In index.js
voer ons ons useFetch
Haak in en gebruik dit soos enige ander Haak. Dit is waar ons die URL deurgee om data van te gaan haal.
Nou kan ons hierdie pasgemaakte Hook in enige komponent hergebruik om data van enige URL af te haal.