Fix: Handle undefined budget data

The `useBudgetTabContent` hook was throwing an error when `data` prop was undefined. This commit adds a check to ensure that `data` is defined before accessing its properties.
This commit is contained in:
gpt-engineer-app[bot]
2025-03-23 10:09:50 +00:00
parent abf8c6ae0c
commit 8cf2e70050
4 changed files with 40 additions and 11 deletions

View File

@@ -7,17 +7,24 @@ import RecentTransactionsSection from '@/components/RecentTransactionsSection';
import Header from '@/components/Header';
import { useBudget } from '@/contexts/budget';
import SafeAreaContainer from '@/components/SafeAreaContainer';
import { formatCurrency } from '@/utils/formatters';
const Index = () => {
const { transactions, budgetData } = useBudget();
const { transactions, budgetData, handleBudgetGoalUpdate } = useBudget();
// 페이지 마운트 시 데이터 로깅 (디버깅 용도)
// 데이터 구조 확인용 로깅
useEffect(() => {
console.info('Index 페이지 마운트, 현재 데이터 상태:');
console.info('트랜잭션:', transactions.length);
console.info('트랜잭션:', transactions?.length);
console.info('예산 데이터:', budgetData);
}, [transactions, budgetData]);
// 예산 퍼센트 계산 함수
const calculatePercentage = (spent: number, target: number) => {
if (target <= 0) return 0;
return Math.min(100, Math.round((spent / target) * 100));
};
return (
<SafeAreaContainer className="min-h-screen bg-neuro-background">
<div className="max-w-md mx-auto px-6">
@@ -30,11 +37,23 @@ const Index = () => {
</TabsList>
<TabsContent value="budget" className="focus-visible:outline-none">
<BudgetTabContent budgetData={budgetData.monthly} />
{budgetData && budgetData.monthly && (
<BudgetTabContent
data={budgetData.monthly}
formatCurrency={formatCurrency}
calculatePercentage={calculatePercentage}
onSaveBudget={(amount, categoryBudgets) =>
handleBudgetGoalUpdate('monthly', amount, categoryBudgets)
}
/>
)}
</TabsContent>
<TabsContent value="recent" className="focus-visible:outline-none">
<RecentTransactionsSection />
<RecentTransactionsSection
transactions={transactions || []}
onUpdateTransaction={transaction => console.log('트랜잭션 업데이트', transaction)}
/>
</TabsContent>
</Tabs>
</div>