Yükleme ve hata durumlarıyla birlikte genel veri çekme hook'u.
import { useState, useEffect } from class=class="text-emerald-400">"text-emerald-400">'react'
interface FetchState<T> {
data: T | null
loading: boolean
error: string | null
}
function useFetch<T>(url: string): FetchState<T> {
const [state, setState] = useState<FetchState<T>>({
data: null, loading: true, error: null
})
useEffect(() => {
const controller = new AbortController()
setState({ data: null, loading: true, error: null })
fetch(url, { signal: controller.signal })
.then(res => res.json())
.then(data => setState({ data, loading: false, error: null }))
.catch(err => {
if (err.name !== class=class="text-emerald-400">"text-emerald-400">'AbortError') {
setState({ data: null, loading: false, error: err.message })
}
})
return () => controller.abort()
}, [url])
return state
}
export default useFetchHerhangi bir URL ile çağırın: const { data, loading, error } = useFetch<User[]>('/api/users'). Yükleme durumlarını yönetir ve URL değiştiğinde önceki istekleri iptal eder.
Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.