From 71ca97f03a4b2b1998c205b081b312494f2cdad4 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 30 Jul 2026 15:34:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(#1195):=20=E9=9F=B3=E9=A2=91=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E7=AB=9E=E6=80=81=E4=BF=AE=E5=A4=8D=20-=20=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E4=B8=AD=E6=A0=A1=E9=AA=8C=E5=BD=93=E5=89=8D=E6=B4=BB?= =?UTF-8?q?=E8=B7=83=E9=9F=B3=E9=A2=91=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/hooks/useStep5Voice.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/web/src/pages/generate/hooks/useStep5Voice.tsx b/apps/web/src/pages/generate/hooks/useStep5Voice.tsx index 89fbe68e1..27fa35269 100755 --- a/apps/web/src/pages/generate/hooks/useStep5Voice.tsx +++ b/apps/web/src/pages/generate/hooks/useStep5Voice.tsx @@ -149,16 +149,19 @@ export function useStep5Voice({ audio .play() .then(() => { - if (cloneMountedRef.current) setPlayingCloneVoice(voice.id); + // 只有当前活跃的音频实例才能更新状态,防止快速切换竞态 + if (cloneMountedRef.current && cloneAudioRef.current === audio) { + setPlayingCloneVoice(voice.id); + } }) .catch(() => { - if (cloneMountedRef.current) { + if (cloneMountedRef.current && cloneAudioRef.current === audio) { message.error("播放失败,请检查网络"); cloneAudioRef.current = null; } }); audio.onended = () => { - if (cloneMountedRef.current) { + if (cloneMountedRef.current && cloneAudioRef.current === audio) { setPlayingCloneVoice(null); cloneAudioRef.current = null; }