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.
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;
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 (); } export default CounterComponent;Count: {count}
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;
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); } exportar el componente DataFetchingComponent predeterminado;Loading...
; if (error) returnError: {error.message}
; return (); } export default DataFetchingComponent;Data:
{JSON.stringify(data, null, 2)}
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.
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