Kuidas Reactis andmetele ligi pääseda?
sobes.tech AI
Vastus AI-lt
Reactil on mitu viisi andmetele ligi pääsemise meetodid:
-
Propid (Props): Andmete edastamine vanemkomponendilt lapsekomponendile. Propid on komponendi sees muutumatud.
// Vanemkomponent function ParentComponent() { const data = "Tere vanemalt!"; return <ChildComponentmyData={data} />; } // Lapsekomponent function ChildComponent(props) { return <p>{props.myData}</p>; // Andmetele pääseb props.myData kaudu } -
Oleku (State): Andmete haldamine komponendi sees, mis võivad aja jooksul muutuda. Kasutatakse komponendispetsiifiliste andmete jaoks.
import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); // Oleku määratlemine function handleClick() { setCount(count + 1); // Oleku muutmine } return ( <div> <p>Loendus: {count}</p> <button onClick={handleClick}>Suurenda</button> </div> ); } -
Context API: Lahendus andmete tsentraliseeritud haldamiseks, mis on kättesaadavad paljudele sügavalt sisestatud komponentidele ilma propide edastamiseta iga taseme kaudu. Sobib globaalsete või sageli kasutatavate andmete jaoks (näiteks teema, autentimine).
import React, { createContext, useContext } from 'react'; // Konteksti loomine const MyContext = createContext(); // Konteksti pakkuja function MyProvider({ children }) { const sharedData = "Jagatud andmed"; return ( <MyContext.Provider value={sharedData}> {children} </MyContext.Provider> ); } // Konteksti kasutaja function MyConsumerComponent() { const data = useContext(MyContext); // Andmetele pääsemine useContext abil return <p>{data}</p>; } -
Andmehakatid (Custom Hooks): Taaskasutatava loogika loomine andmetele juurdepääsuks välisest allikast (näiteks API-st).
import { useState, useEffect } from 'react'; function useFetchData(url) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { async function fetchData() { try { const response = await fetch(url); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const result = await response.json(); setData(result); } catch (error) { setError(error); } finally { setLoading(false); } } fetchData(); }, [url]); // Atkarība no url return { data, loading, error }; } // Hakuka kasutamine function DataDisplay() { const { data, loading, error } = useFetchData('https://api.example.com/data'); if (loading) return <p>Laadimine...</p>; if (error) return <p>Viga: {error.message}</p>; return <p>{JSON.stringify(data)}</p>; } -
Raudtee (Raamatukogud nagu Redux, Zustand jms): Kompleksse oleku haldamiseks kasutatakse kolmanda osapoole raamatukogusid. Need pakuvad tsentraliseeritud andmehoidlat ja mehhanisme nende muutuste haldamiseks.