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 });
|
'$' + (v ?? 0).toLocaleString('es-MX', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
|
|
||||||
export const CortePrint: FC<{ corte: CashClosing | null; onClose: () => void }> = ({ corte, onClose }) => {
|
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();
|
const clinic = useClinicaPrint();
|
||||||
|
if (!corte) return null;
|
||||||
|
|
||||||
const fila = (label: string, valor: number) => (
|
const fila = (label: string, valor: number) => (
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -76,9 +76,10 @@ export const EstadoCuentaPrint: FC<EstadoCuentaPrintProps> = ({ isOpen, onClose,
|
|||||||
return () => { alive = false; };
|
return () => { alive = false; };
|
||||||
}, [isOpen, paciente]);
|
}, [isOpen, paciente]);
|
||||||
|
|
||||||
|
// El hook va antes de cualquier return condicional (reglas de React).
|
||||||
|
const clinic = useClinicaPrint();
|
||||||
if (!paciente) return null;
|
if (!paciente) return null;
|
||||||
|
|
||||||
const clinic = useClinicaPrint();
|
|
||||||
const fechaEmision = new Date().toLocaleDateString('es-MX', { day: '2-digit', month: 'long', year: 'numeric' });
|
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 totalVentas = ventas.reduce((a, v) => a + v.total, 0);
|
||||||
const totalPagado = ventas.reduce((a, v) => a + v.amount_paid, 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 }) => {
|
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();
|
const clinic = useClinicaPrint();
|
||||||
|
if (!receipt) return null;
|
||||||
// Recibo de recarga de saldo a favor (anticipo): mismo formato, sin el
|
// Recibo de recarga de saldo a favor (anticipo): mismo formato, sin el
|
||||||
// desglose de adeudo y mostrando el saldo a favor resultante.
|
// desglose de adeudo y mostrando el saldo a favor resultante.
|
||||||
const esDeposito = receipt.tipo === 'deposito';
|
const esDeposito = receipt.tipo === 'deposito';
|
||||||
|
|||||||
@@ -12,8 +12,9 @@ const money = (v: number) =>
|
|||||||
|
|
||||||
|
|
||||||
export const ConteoPrint: FC<{ conteo: InventoryConteo | null; onClose: () => void }> = ({ conteo, onClose }) => {
|
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();
|
const clinic = useClinicaPrint();
|
||||||
|
if (!conteo) return null;
|
||||||
const lineas = conteo.lines || [];
|
const lineas = conteo.lines || [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user