"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Ganchos personalizados en React

Ganchos personalizados en React

Publicado el 2024-11-04
Navegar:782

Custom Hooks in React

Los ganchos personalizados en React son una característica poderosa que le permite extraer y reutilizar la lógica en múltiples componentes. Le permiten encapsular una lógica con estado compleja, haciendo que sus componentes sean más limpios y más fáciles de mantener. A continuación se ofrece una descripción general rápida y un ejemplo de cómo crear y utilizar ganchos personalizados.

Crear un gancho personalizado

Un enlace personalizado es esencialmente una función de JavaScript cuyo nombre comienza con uso y que puede llamar a otros enlaces dentro de él. A continuación se muestra un ejemplo sencillo de un gancho personalizado que gestiona un contador:

import { useState } from 'react';

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

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

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

export default useCounter;

Usando el gancho personalizado

Puedes usar el gancho useCounter en cualquier componente funcional:

import React from 'react';
import useCounter from './useCounter';

function CounterComponent() {
    const { count, increment, decrement, reset } = useCounter(0);

    return (
        

Count: {count}

); } export default CounterComponent;

Puntos clave

  1. Convención de nomenclatura: siempre inicie el nombre del gancho personalizado con use para seguir la convención de React.
  2. Reutilizabilidad: Los ganchos personalizados se pueden reutilizar en múltiples componentes, promoviendo el código DRY (No te repitas).
  3. Administración de estado: puede administrar el estado, realizar efectos secundarios y aprovechar otros ganchos dentro de un gancho personalizado.

Ejemplo avanzado: obtención de datos

Aquí hay un enlace personalizado más avanzado para recuperar datos:

import { useState, useEffect } from 'react';

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

    useEffect(() => {
        const fetchData = async () => {
            try {
                const response = await fetch(url);
                if (!response.ok) throw new Error('Network response was not ok');
                const result = await response.json();
                setData(result);
            } catch (error) {
                setError(error);
            } finally {
                setLoading(false);
            }
        };

        fetchData();
    }, [url]);

    return { data, loading, error };
}

export default useFetch;

Uso

Puedes usar el gancho useFetch en un componente para recuperar datos:

import React from 'react';
import useFetch from './useFetch';

function DataFetchingComponent() {
    const { data, loading, error } = useFetch('https://api.example.com/data');

    if (loading) return 

Loading...

; if (error) return

Error: {error.message}

; return (

Data:

{JSON.stringify(data, null, 2)}
); } export default DataFetchingComponent;
); } exportar el componente DataFetchingComponent predeterminado;

Los enlaces personalizados son una excelente manera de encapsular la lógica y compartir funcionalidad entre sus componentes de una manera limpia y fácil de mantener.

Declaración de liberación Este artículo se reproduce en: https://dev.to/imyusufakhtar/custom-hooks-in-react-2mk4?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3