diff --git a/apps/web/src/pages/generate/hooks/useStep2Materials.ts b/apps/web/src/pages/generate/hooks/useStep2Materials.ts index 06f41797b..0d5a8c406 100755 --- a/apps/web/src/pages/generate/hooks/useStep2Materials.ts +++ b/apps/web/src/pages/generate/hooks/useStep2Materials.ts @@ -38,16 +38,18 @@ export function useStep2Materials({ const autoTriggeredRef = useRef("") const { handleSmartMatch } = smartMatch useEffect(() => { - // 仅在 auto 模式 + 素材加载完成后自动触发 - if (materialMode !== "auto") return + // 离开 auto 模式时重置,确保下次进入 auto 模式能重新触发 + if (materialMode !== "auto") { + autoTriggeredRef.current = "" + return + } if (!selectedLibraryId) return if (materialsLoading) return if (materials.items.length === 0) return - // 防止同一视频库+同一模式重复触发(模式切换时 key 变化会重新触发) - const triggerKey = `${selectedLibraryId}_${materialMode}` - if (autoTriggeredRef.current === triggerKey) return + // 防止同一视频库重复触发 + if (autoTriggeredRef.current === selectedLibraryId) return - autoTriggeredRef.current = triggerKey + autoTriggeredRef.current = selectedLibraryId handleSmartMatch() }, [selectedLibraryId, materialMode, materialsLoading, materials.items, handleSmartMatch])