From 31b6edf06b0c6a84524a6f2c99e71035662dcfcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Sat, 6 Jun 2026 10:57:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=9F=E6=88=90=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=20toast=20=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 sonner toast 显示成功提示 - 简化提示:生成完成 + 数据条数 - 仅在失败或有警告时显示结果面板 - 使用 useRef 记录已触发的 result - 仅在新 result 时触发 toast --- public/_locales/zh_CN/messages.json | 8 ++++++++ src/pages/TestDataGenerator/index.tsx | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/public/_locales/zh_CN/messages.json b/public/_locales/zh_CN/messages.json index 9f7776a..1fe5ccb 100644 --- a/public/_locales/zh_CN/messages.json +++ b/public/_locales/zh_CN/messages.json @@ -1067,6 +1067,14 @@ "message": "生成成功", "description": "Translation key: testDataGenerator_success" }, + "testDataGenerator_generateSuccess": { + "message": "生成完成", + "description": "Translation key: testDataGenerator_generateSuccess" + }, + "testDataGenerator_records": { + "message": "条数据", + "description": "Translation key: testDataGenerator_records" + }, "testDataGenerator_partialSuccess": { "message": "部分成功", "description": "Translation key: testDataGenerator_partialSuccess" diff --git a/src/pages/TestDataGenerator/index.tsx b/src/pages/TestDataGenerator/index.tsx index 8474cde..f8b0193 100644 --- a/src/pages/TestDataGenerator/index.tsx +++ b/src/pages/TestDataGenerator/index.tsx @@ -10,6 +10,7 @@ import { useGenerator } from './hooks/useGenerator'; import { getGeneratorById } from '@/lib/generators'; import type { FieldConfig, GenerateResult } from '@/types/testDataGenerator'; import { Dialog, DialogContent } from '@/components/ui/dialog'; +import { toast } from 'sonner'; // 生成唯一 ID 的辅助函数 function generateId(): string { @@ -47,6 +48,7 @@ export default function TestDataGeneratorPage() { // 实时预览(防抖) const [previewResult, setPreviewResult] = useState(null); const debounceTimerRef = useRef | null>(null); + const lastToastResultRef = useRef(null); // 配置变更时生成预览数据(防抖 300ms) useEffect(() => { @@ -98,6 +100,16 @@ export default function TestDataGeneratorPage() { }; }, [fields, count]); + // 生成完成时显示 toast 提示(避免重复触发) + useEffect(() => { + if (result?.success && result.stats && result !== lastToastResultRef.current) { + lastToastResultRef.current = result; + toast.success(t('testDataGenerator_generateSuccess'), { + description: `${result.stats.total} ${t('testDataGenerator_records')}`, + }); + } + }, [result, t]); + // 添加新字段 const handleAddField = useCallback(() => { if (fields.length >= MAX_FIELDS) return; @@ -267,7 +279,10 @@ export default function TestDataGeneratorPage() { {/* 右侧面板 - 数据预览和结果 */}
{/* 结果状态 */} - {(result || error) && ( + {/* 仅在失败或有警告时显示结果面板 */} + {((result && !result.success) || + (result?.warnings && result.warnings.length > 0) || + error) && (
{error ? (