React 中的自訂 Hook 是一項強大的功能,可讓您跨多個元件提取和重複使用邏輯。它們使您能夠封裝複雜的狀態邏輯,使您的元件更乾淨且更易於維護。以下是如何建立和使用自訂掛鉤的快速概述和範例。
自訂鉤子本質上是一個 JavaScript 函數,其名稱以 use 開頭,並且可以呼叫其中的其他鉤子。這是管理計數器的自訂掛鉤的簡單範例:
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;
您可以在任何功能元件中使用 useCounter 鉤子:
import React from 'react'; import useCounter from './useCounter'; function CounterComponent() { const { count, increment, decrement, reset } = useCounter(0); return (); } export default CounterComponent;Count: {count}
這是用於獲取資料的更高級的自訂掛鉤:
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;
您可以在元件中使用useFetch鉤子來取得資料:
import React from 'react'; import useFetch from './useFetch'; function DataFetchingComponent() { const { data, loading, error } = useFetch('https://api.example.com/data'); if (loading) return); } 導出預設的DataFetchingComponent;Loading...
; if (error) returnError: {error.message}
; return (); } export default DataFetchingComponent;Data:
{JSON.stringify(data, null, 2)}
自訂掛鉤是以乾淨且可維護的方式封裝邏輯並在元件之間共用功能的好方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3