fix: snapshot estable en store del indice (evita re-renders infinitos)

This commit is contained in:
Nurfog committed 2026-09-08 16:11:44 -03:00
1 parent d30374729c
commit 5c6d6bc46e
1 file changed
+9 -1
+9 -1
View File
@@ -15,6 +15,10 @@ import {
let cache: ApiResponse | null = null; let cache: ApiResponse | null = null;
let loadError: string | null = null; let loadError: string | null = null;
let started = false; let started = false;
let snap: { data: ApiResponse | null; error: string | null } = {
data: null,
error: null,
};
const listeners = new Set<() => void>(); const listeners = new Set<() => void>();
function notify() { function notify() {
@@ -30,6 +34,10 @@ async function load() {
} catch (e) { } catch (e) {
loadError = e instanceof Error ? e.message : "Error al cargar módulos"; loadError = e instanceof Error ? e.message : "Error al cargar módulos";
} }
// Referencia estable: solo cambia si cambian los datos (evita loops)
if (snap.data !== cache || snap.error !== loadError) {
snap = { data: cache, error: loadError };
}
notify(); notify();
} }
@@ -46,7 +54,7 @@ function subscribe(cb: () => void) {
} }
function snapshot(): { data: ApiResponse | null; error: string | null } { function snapshot(): { data: ApiResponse | null; error: string | null } {
return { data: cache, error: loadError }; return snap;
} }
export default function Home() { export default function Home() {