From c08d4bda9b5f26e72d841fab91c83cc2d604c4db Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 30 Jul 2026 11:27:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20useEffect=E7=94=A8=E5=B1=80=E9=83=A8acti?= =?UTF-8?q?ve=E5=8F=98=E9=87=8F=E6=9B=BF=E4=BB=A3mountedRef=E9=98=B2?= =?UTF-8?q?=E7=AB=9E=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TtsPanel/hooks/useTtsPanel.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts b/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts index 631085b9d..e6e2d8390 100644 --- a/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts +++ b/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts @@ -20,20 +20,23 @@ export const useTtsPanel = ({ open, config, onChange, onClose }: UseTtsPanelOpti const [previewLoading, setPreviewLoading] = useState(false) const audioRef = useRef(null) const mountedRef = useRef(true) - /* ── 加载音色列表 ── */ useEffect(() => { if (!open) return - mountedRef.current = true + let active = true setVoicesLoading(true) getTtsVoices() - .then((v) => setVoices(v)) - .catch(() => message.error("加载音色列表失败")) + .then((v) => { + if (active) setVoices(v) + }) + .catch(() => { + if (active) message.error("加载音色列表失败") + }) .finally(() => { - if (mountedRef.current) setVoicesLoading(false) + if (active) setVoicesLoading(false) }) return () => { - mountedRef.current = false + active = false } }, [open])