diff --git a/src/pages/Cutting.tsx b/src/pages/Cutting.tsx index eb804d8..009fea6 100644 --- a/src/pages/Cutting.tsx +++ b/src/pages/Cutting.tsx @@ -157,6 +157,7 @@ const Cutting = () => { const [settingsSection, setSettingsSection] = useState('rules'); const [cuttingSettings, setCuttingSettings] = useState(loadCuttingSettings); const [yieldRecommendations, setYieldRecommendations] = useState([]); + const [hasLoadedYieldRecommendations, setHasLoadedYieldRecommendations] = useState(false); const [saveStatus, setSaveStatus] = useState('idle'); const [hasUnsavedSettings, setHasUnsavedSettings] = useState(false); const [correctionIssueFilter, setCorrectionIssueFilter] = useState('all'); @@ -214,14 +215,22 @@ const Cutting = () => { }, []); useEffect(() => { + if (!isSettingsOpen || settingsSection !== 'rules' || hasLoadedYieldRecommendations) return; + let isMounted = true; void fetchProductionOrderImportData().then(data => { - if (isMounted) setYieldRecommendations(data.recommendations); + if (isMounted) { + setYieldRecommendations(data.recommendations); + setHasLoadedYieldRecommendations(true); + } }).catch(() => { - if (isMounted) setYieldRecommendations([]); + if (isMounted) { + setYieldRecommendations([]); + setHasLoadedYieldRecommendations(true); + } }); return () => { isMounted = false; }; - }, []); + }, [hasLoadedYieldRecommendations, isSettingsOpen, settingsSection]); useEffect(() => { let isMounted = true;