Qu'est-ce que React Hooks ?
React Hooks, introduits dans la version 16.8 de React, sont des fonctions qui vous permettent d'utiliser l'état et d'autres fonctionnalités de React sans écrire de classes. Ils simplifient la gestion de l'état et les effets secondaires dans les composants fonctionnels, rendant le code plus lisible et maintenable.
Pourquoi utiliser des Hooks ?
- Code plus propre et plus lisible : Les composants fonctionnels sont généralement plus simples et plus concis que les composants basés sur des classes.
- Réutilisation de la logique d'état : Les hooks permettent de réutiliser la logique d'état entre différents composants sans changer leur structure.
- Facilité de tests : Les fonctions pures sont plus faciles à tester que les classes.
Les Hooks de base
useState
useState
est le hook le plus simple et le plus couramment utilisé. Il permet d'ajouter un état local à un composant fonctionnel.
Exemple :
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Vous avez cliqué {count} fois</p>
<button onClick={() => setCount(count + 1)}>
Cliquez ici
</button>
</div>
);
}
useState
initialise count
à 0 et fournit une fonction setCount
pour mettre à jour cet état.useEffect
useEffect
est utilisé pour les effets secondaires dans les composants fonctionnels, comme les appels d'API, les abonnements, ou les modifications du DOM.
Exemple :
import React, { useState, useEffect } from 'react';
function Timer() {
const [count, setCount] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setCount(prevCount => prevCount + 1);
}, 1000);
return () => clearInterval(timer);
}, []);
return <div>Temps écoulé : {count} secondes</div>;
}
useEffect
met en place un intervalle qui incrémente count
chaque seconde. L'effet est nettoyé lorsque le composant est démonté en retournant une fonction de nettoyage.Autres Hooks Utiles
useContext
useContext
permet d'utiliser le contexte React dans un composant fonctionnel.
Exemple :
import React, { useContext } from 'react';
const MyContext = React.createContext();
function MyComponent() {
const value = useContext(MyContext);
return <div>{value}</div>;
}
function App() {
return (
<MyContext.Provider value="voici le message !">
<MyComponent />
</MyContext.Provider>
);
}
Provider
, et les composants enfants peuvent accéder à cette valeur avec useContext
.useReducer
useReducer
est utilisé pour la gestion d'état complexe, offrant une alternative à useState
.
Exemple :
import React, { useReducer } from 'react';
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<div>
<p>Compteur : {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>+</button>
<button onClick={() => dispatch({ type: 'decrement' })}>-</button>
</div>
);
}
reducer
est utiliser et elle prend l'état actuel (state
) et une action (action
), et retourne un nouvel état basé sur le type de l'action.case 'increment'
: Si l'action est de typeincrement
, le compteur est incrémenté de 1.case 'decrement'
: Si l'action est de typedecrement
, le compteur est décrémenté de 1.default
: Si l'action n'est pas reconnue, une erreur est lancée.
Conclusion
Les React Hooks ont révolutionné la manière dont les développeurs construisent des composants avec état dans React. useState
et useEffect
sont les hooks les plus basiques et les plus utilisés, mais il en existe d'autres comme useContext
, useReducer,useCallback,useMemo,useRef,useLayoutEffect
qui sont tout aussi puissants pour des cas d'utilisation spécifiques. En utilisant les hooks, vous pouvez écrire du code plus propre, plus réutilisable et plus facile à tester.
Les hooks ne remplacent pas complètement les classes, mais ils offrent une alternative plus flexible et souvent plus intuitive pour gérer l'état et les effets secondaires dans les composants fonctionnels.
Commentaires
Enregistrer un commentaire