Files
16gagent/.benchmark/project-mgmt/frontend/hooks/useItem.ts
T
2026-06-06 10:40:48 +08:00

36 lines
896 B
TypeScript

"use client";
import { useState, useEffect, useCallback } from "react";
// Generic data type for 项目看板
type Item = Record<string, unknown>;
/**
* Fetch and manage 项目看板 data.
*/
export function useItem() {
const [data, setData] = useState<Item[]>([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
const fetchData = useCallback(async () => {
try {
setLoading(true);
setError(null);
const res = await fetch(`/api/项目看板`);
const json = await res.json();
setData(Array.isArray(json) ? json : json?.data || []);
} catch (e) {
setError(e instanceof Error ? e.message : "Failed to load data");
} finally {
setLoading(false);
}
}, []);
useEffect(() => {
fetchData();
}, [fetchData]);
return { data, loading, error, refetch: fetchData };
}