refactor: optimize state initialization with lazy initializers
- Move billStates calculation into useState lazy initializer to prevent recalculation on re-renders - Initialize allPaidMode based on billStates to reflect actual data state - Use lazy initialization pattern for better performance - Remove intermediate variables to simplify code 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,18 +26,21 @@ export const MultiBillEdit: FC<MultiBillEditProps> = ({ locations, year, month }
|
||||
const t = useTranslations("multi-bill-edit");
|
||||
const router = useRouter();
|
||||
|
||||
// Initialize bill states from locations
|
||||
const initialBillStates: BillState[] = locations.flatMap(location =>
|
||||
location.bills.map(bill => ({
|
||||
locationId: location._id,
|
||||
billId: bill._id,
|
||||
paid: bill.paid,
|
||||
}))
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
|
||||
const [billStates, setBillStates] = useState<BillState[]>(() =>
|
||||
locations.flatMap(location =>
|
||||
location.bills.map(bill => ({
|
||||
locationId: location._id,
|
||||
billId: bill._id,
|
||||
paid: bill.paid,
|
||||
}))
|
||||
)
|
||||
);
|
||||
|
||||
const [billStates, setBillStates] = useState<BillState[]>(initialBillStates);
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const [allPaidMode, setAllPaidMode] = useState(false);
|
||||
const [allPaidMode, setAllPaidMode] = useState(() =>
|
||||
billStates.length > 0 && billStates.every(bill => bill.paid)
|
||||
);
|
||||
|
||||
// Toggle individual bill paid status
|
||||
const handleBillToggle = (locationId: string, billId: string) => {
|
||||
|
||||
Reference in New Issue
Block a user