Comment accéder aux données dans React?
sobes.tech IA
Réponse de l'IA
Il existe plusieurs façons d'accéder aux données dans React:
-
Props: Transmettre des données d'un composant parent à un composant enfant. Les props sont immuables à l'intérieur du composant.
// Composant parent function ParentComponent() { const data = "Bonjour du parent!"; return <ChildComponent myData={data} />; } // Composant enfant function ChildComponent(props) { return <p>{props.myData}</p>; // Accès aux données via props.myData } -
État (State): Gestion des données à l'intérieur du composant, qui peuvent changer au fil du temps. Utilisé pour des données spécifiques au composant.
import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); // Définition de l'état function handleClick() { setCount(count + 1); // Changement d'état } return ( <div> <p>Compteur: {count}</p> <button onClick={handleClick}>Incrémenter</button> </div> ); } -
API de contexte: Solution pour gérer centralement des données accessibles à de nombreux composants imbriqués sans passer explicitement des props à chaque niveau. Convient pour des données globales ou fréquemment utilisées (par exemple, thème, authentification).
import React, { createContext, useContext } from 'react'; // Création du contexte const MyContext = createContext(); // Fournisseur du contexte function MyProvider({ children }) { const sharedData = "Données partagées"; return ( <MyContext.Provider value={sharedData}> {children} </MyContext.Provider> ); } // Consommateur du contexte function MyConsumerComponent() { const data = useContext(MyContext); // Accès aux données via useContext return <p>{data}</p>; } -
Hooks personnalisés: Création d'une logique réutilisable pour accéder à des données provenant de sources externes (par exemple, API).
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(`Erreur HTTP! statut: ${response.status}`); } const result = await response.json(); setData(result); } catch (error) { setError(error); } finally { setLoading(false); } } fetchData(); }, [url]); // Dépendance de url return { data, loading, error }; } // Utilisation du hook function DataDisplay() { const { data, loading, error } = useFetchData('https://api.example.com/data'); if (loading) return <p>Chargement...</p>; if (error) return <p>Erreur: {error.message}</p>; return <p>{JSON.stringify(data)}</p>; } -
Bibliothèques (comme Redux, Zustand, etc.): Pour gérer des états complexes de l'application, on utilise des bibliothèques tierces. Elles offrent un stockage centralisé des données et des mécanismes pour gérer leurs modifications.