Fix: crash (React #310) al abrir informacion de un paciente
useClinicaPrint() quedaba despues de un return condicional en EstadoCuentaPrint, ReciboPrint, CortePrint y ConteoPrint (migracion de clinicSettings del punto 11). Al pasar de paciente null a uno real el numero de hooks cambiaba entre renders y React tumaba la pantalla con 'Minified React error #310'. El hook ahora va antes de cualquier return condicional en los 4 componentes.
This commit is contained in:
@@ -14,8 +14,9 @@ const money = (v: number) =>
|
||||
'$' + (v ?? 0).toLocaleString('es-MX', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||
|
||||
export const CortePrint: FC<{ corte: CashClosing | null; onClose: () => void }> = ({ corte, onClose }) => {
|
||||
if (!corte) return null;
|
||||
// El hook va antes de cualquier return condicional (reglas de React).
|
||||
const clinic = useClinicaPrint();
|
||||
if (!corte) return null;
|
||||
|
||||
const fila = (label: string, valor: number) => (
|
||||
<tr>
|
||||
|
||||
@@ -76,9 +76,10 @@ export const EstadoCuentaPrint: FC<EstadoCuentaPrintProps> = ({ isOpen, onClose,
|
||||
return () => { alive = false; };
|
||||
}, [isOpen, paciente]);
|
||||
|
||||
// El hook va antes de cualquier return condicional (reglas de React).
|
||||
const clinic = useClinicaPrint();
|
||||
if (!paciente) return null;
|
||||
|
||||
const clinic = useClinicaPrint();
|
||||
const fechaEmision = new Date().toLocaleDateString('es-MX', { day: '2-digit', month: 'long', year: 'numeric' });
|
||||
const totalVentas = ventas.reduce((a, v) => a + v.total, 0);
|
||||
const totalPagado = ventas.reduce((a, v) => a + v.amount_paid, 0);
|
||||
|
||||
@@ -19,8 +19,10 @@ const money = (v: number) =>
|
||||
|
||||
|
||||
export const ReciboPrint: FC<{ receipt: ReceiptData | null; onClose: () => void }> = ({ receipt, onClose }) => {
|
||||
if (!receipt) return null;
|
||||
// El hook va antes de cualquier return condicional (reglas de React:
|
||||
// mismo número de hooks en todos los renders del componente).
|
||||
const clinic = useClinicaPrint();
|
||||
if (!receipt) return null;
|
||||
// Recibo de recarga de saldo a favor (anticipo): mismo formato, sin el
|
||||
// desglose de adeudo y mostrando el saldo a favor resultante.
|
||||
const esDeposito = receipt.tipo === 'deposito';
|
||||
|
||||
@@ -12,8 +12,9 @@ const money = (v: number) =>
|
||||
|
||||
|
||||
export const ConteoPrint: FC<{ conteo: InventoryConteo | null; onClose: () => void }> = ({ conteo, onClose }) => {
|
||||
if (!conteo) return null;
|
||||
// El hook va antes de cualquier return condicional (reglas de React).
|
||||
const clinic = useClinicaPrint();
|
||||
if (!conteo) return null;
|
||||
const lineas = conteo.lines || [];
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user