"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Meilleurs conseils pour créer des hooks personnalisés dans React

Meilleurs conseils pour créer des hooks personnalisés dans React

Publié le 2024-11-07
Parcourir:514

Best Tips for Creating Custom Hooks in React

Les Hooks personnalisés de React sont un outil efficace pour supprimer les fonctionnalités réutilisables de vos composants. Ils prennent en charge DRY (Don't Repeat Yourself), la maintenabilité et la propreté de votre code. Mais développer des hooks personnalisés utiles nécessite une solide compréhension des idées fondamentales et des procédures recommandées de React. Dans cet article, nous discuterons de certaines des meilleures stratégies pour développer des hooks personnalisés dans React, avec des exemples pour expliquer comment les appliquer efficacement.

1. Comprendre le but des hooks

Avant de vous lancer dans la création de hooks personnalisés, il est crucial de comprendre ce que sont les hooks et pourquoi ils existent. Les hooks vous permettent d'utiliser l'état et d'autres fonctionnalités de React dans des composants fonctionnels. Les hooks personnalisés vous permettent d'extraire la logique des composants dans des fonctions réutilisables, qui peuvent être partagées entre plusieurs composants.

Exemple : Hook personnalisé de base

Voici un exemple simple de hook personnalisé qui gère un compteur :

import { useState } from 'react';

function useCounter(initialValue = 0) {
  const [count, setCount] = useState(initialValue);

  const increment = () => setCount(prevCount => prevCount   1);
  const decrement = () => setCount(prevCount => prevCount - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

// Usage in a component
// const { count, increment, decrement, reset } = useCounter(10);

2. Suivre les conventions de dénomination

React a une convention selon laquelle les hooks personnalisés doivent commencer par le mot « utiliser ». Ce n'est pas seulement un choix stylistique : React s'appuie sur cette convention pour appliquer automatiquement les règles des hooks (comme ne pas les appeler conditionnellement).

Conseil : démarrez toujours vos hooks personnalisés par use pour vous assurer que React sait qu'il s'agit d'un hook.

3. Gardez les crochets purs

Les hooks personnalisés doivent être des fonctions pures, ce qui signifie qu'ils ne doivent pas avoir d'effets secondaires tels que la modification de variables globales ou l'interaction directe avec des systèmes externes. Si des effets secondaires sont nécessaires, comme effectuer un appel d'API, ils doivent être gérés dans le hook à l'aide de hooks React intégrés comme useEffect.

Exemple : Hook avec effets secondaires

import { useState, useEffect } from 'react';

function useFetchData(url) {
  const [data, setData] = useState(null);
  const [error, setError] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch(url);
        const result = await response.json();
        setData(result);
      } catch (err) {
        setError(err);
      } finally {
        setLoading(false);
      }
    };

    fetchData();
  }, [url]);

  return { data, error, loading };
}

// Usage in a component
// const { data, error, loading } = useFetchData('https://api.example.com/data');

4. Tirer parti des hooks existants
Lors de la création de hooks personnalisés, assurez-vous de tirer parti des hooks React existants tels que useState, useEffect, useContext et autres. Cela garantit que votre hook personnalisé est composable et peut fonctionner de manière transparente avec les fonctionnalités intégrées de React.

Exemple : combinaison de crochets

Voici un hook personnalisé qui combine useState et useEffect pour gérer le stockage local :

import { useState, useEffect } from 'react';

function useLocalStorage(key, initialValue) {
  const [storedValue, setStoredValue] = useState(() => {
    try {
      const item = window.localStorage.getItem(key);
      return item ? JSON.parse(item) : initialValue;
    } catch (error) {
      console.error(error);
      return initialValue;
    }
  });

  useEffect(() => {
    try {
      window.localStorage.setItem(key, JSON.stringify(storedValue));
    } catch (error) {
      console.error(error);
    }
  }, [key, storedValue]);

  return [storedValue, setStoredValue];
}

// Usage in a component
// const [name, setName] = useLocalStorage('name', 'John Doe');

5. Réutilisabilité et composition

L'une des principales raisons de créer des hooks personnalisés est de promouvoir la réutilisabilité. Un bon hook personnalisé doit pouvoir être utilisé sur plusieurs composants sans nécessiter de modifications significatives. De plus, les hooks peuvent être composés ensemble pour créer une logique plus complexe.

Conseil : Concentrez-vous sur l'extraction de la logique susceptible d'être réutilisée sur plusieurs composants.

6. Documentez vos crochets

Comme tout morceau de code, vos hooks personnalisés doivent être bien documentés. Incluez des commentaires expliquant ce que fait le hook, quels paramètres il accepte, ce qu'il renvoie et les effets secondaires qu'il peut avoir. Cela permet aux autres développeurs (et à vous-même) de comprendre et d'utiliser plus facilement vos hooks correctement.

Exemple : Documenter un hook

/**
 * useCounter
 * 
 * A custom hook to manage a counter.
 *
 * @param {number} initialValue - Initial value of the counter.
 * @returns {object} { count, increment, decrement, reset } - Current count and functions to modify it.
 */
function useCounter(initialValue = 0) {
  // Implementation
}

7. Testez vos crochets

Les tests sont essentiels pour garantir que vos hooks personnalisés se comportent comme prévu. Utilisez des bibliothèques de tests comme React-hooks-testing-library ou Jest pour écrire des tests unitaires pour vos hooks.

Exemple : Test de base pour un crochet

import { renderHook, act } from '@testing-library/react-hooks';
import useCounter from './useCounter';

test('should increment and decrement counter', () => {
  const { result } = renderHook(() => useCounter(0));

  act(() => {
    result.current.increment();
  });

  expect(result.current.count).toBe(1);

  act(() => {
    result.current.decrement();
  });

  expect(result.current.count).toBe(0);
});

Une technique efficace pour extraire et réutiliser les fonctionnalités dans toute votre application consiste à utiliser des hooks personnalisés dans React. Vous pouvez créer des hooks fiables et maintenables qui amélioreront votre processus de développement React en comprenant le but des hooks, en adhérant aux conventions de dénomination, en gardant les hooks purs, en utilisant les hooks existants, en garantissant la réutilisabilité, la documentation et les tests.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/wallacefreitas/best-tips-for-creating-custom-hooks-in-react-48ca?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3