feat: 添加关键词词云客户端数据获取 Hook

This commit is contained in:
2026-01-27 20:19:10 +08:00
parent e60c6faeb2
commit 4ce8f9f756
+65
View File
@@ -0,0 +1,65 @@
'use client';
import { useState, useEffect } from 'react';
interface KeywordData {
id: number;
word: string;
trendScore: number;
description: string;
detailPoints: string[];
visualConfig: {
color: string;
size: string;
border: string;
rotation?: string;
};
}
interface QuarterData {
quarter: string;
title: string;
titleEn?: string;
subtitle?: string;
subtitleEn?: string;
keywords: KeywordData[];
}
export function useKeywordCloud(quarter: string) {
const [data, setData] = useState<QuarterData | null>(null);
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<Error | null>(null);
useEffect(() => {
async function fetchData() {
setIsLoading(true);
setError(null);
try {
const response = await fetch(`/api/keyword-cloud/keywords/${quarter}`);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
const json = await response.json();
if (!json.success) {
throw new Error(json.error || 'Unknown error');
}
setData(json);
} catch (err) {
setError(err instanceof Error ? err : new Error('Unknown error'));
} finally {
setIsLoading(false);
}
}
if (quarter) {
fetchData();
}
}, [quarter]);
return { data, isLoading, error };
}