diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 57df9d2f5..ac516327b 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -9,7 +9,7 @@ * - 标题样式通过 CSS 层实时叠加,所见即所得 * - 最终成片仍走后端 FFmpeg 渲染(Step7 确认生成) */ -import React, { useMemo } from "react" +import React, { useMemo, useEffect } from "react" import { Modal, message } from "antd" import { useNavigate } from "react-router-dom" import type { VoiceClone } from "@/api/voice-clone" @@ -101,6 +101,11 @@ const GeneratePage: React.FC = () => { () => (materialMode === "auto" ? smartSelectedIds : selectedMaterials), [materialMode, smartSelectedIds, selectedMaterials], ) + // 素材或模板变化时,清除旧的 previewTaskId,防止 Step7 复用过期预览产物 + useEffect(() => { + setPreviewTaskId(null) + }, [previewAssetIds, selectedTemplate, setPreviewTaskId]) + const previewAssetsEnabled = currentStep >= 4 && previewAssetIds.length > 0 const { assets: previewAssets,