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 t = useTranslations("multi-bill-edit");
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
// Initialize bill states from locations
|
const [isSaving, setIsSaving] = useState(false);
|
||||||
const initialBillStates: BillState[] = locations.flatMap(location =>
|
|
||||||
|
const [billStates, setBillStates] = useState<BillState[]>(() =>
|
||||||
|
locations.flatMap(location =>
|
||||||
location.bills.map(bill => ({
|
location.bills.map(bill => ({
|
||||||
locationId: location._id,
|
locationId: location._id,
|
||||||
billId: bill._id,
|
billId: bill._id,
|
||||||
paid: bill.paid,
|
paid: bill.paid,
|
||||||
}))
|
}))
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
const [billStates, setBillStates] = useState<BillState[]>(initialBillStates);
|
const [allPaidMode, setAllPaidMode] = useState(() =>
|
||||||
const [isSaving, setIsSaving] = useState(false);
|
billStates.length > 0 && billStates.every(bill => bill.paid)
|
||||||
const [allPaidMode, setAllPaidMode] = useState(false);
|
);
|
||||||
|
|
||||||
// Toggle individual bill paid status
|
// Toggle individual bill paid status
|
||||||
const handleBillToggle = (locationId: string, billId: string) => {
|
const handleBillToggle = (locationId: string, billId: string) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user