React의 사용자 정의 후크는 여러 구성 요소에서 로직을 추출하고 재사용할 수 있는 강력한 기능입니다. 이를 통해 복잡한 상태 저장 논리를 캡슐화하여 구성 요소를 더 깔끔하고 유지 관리하기 쉽게 만들 수 있습니다. 다음은 사용자 정의 후크를 만들고 사용하는 방법에 대한 간단한 개요와 예입니다.
사용자 정의 후크는 본질적으로 이름이 use로 시작하고 내부에서 다른 후크를 호출할 수 있는 JavaScript 함수입니다. 다음은 카운터를 관리하는 사용자 정의 후크의 간단한 예입니다.
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