fix: useIssues recargaba en bucle por depender del objeto de filtros
This commit is contained in:
1 parent
8f33add874
commit
de163681c2
1 file changed
+9
-2
@@ -18,19 +18,26 @@ export function useIssues(filters?: IssueFilters, refreshKey = 0) {
|
|||||||
|
|
||||||
const filtersKey = JSON.stringify(filters ?? {});
|
const filtersKey = JSON.stringify(filters ?? {});
|
||||||
|
|
||||||
|
// OJO: depender solo del string serializado. `filters` es un objeto
|
||||||
|
// nuevo en cada render (se crea inline en cada página); si entrara en
|
||||||
|
// las dependencias, `load` cambiaría siempre y el efecto recargaría en
|
||||||
|
// bucle, parpadeando la lista.
|
||||||
const load = useCallback(async () => {
|
const load = useCallback(async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await api.listIssues(filters ? JSON.parse(filtersKey) : undefined);
|
const parsed = JSON.parse(filtersKey) as IssueFilters | undefined;
|
||||||
|
const result = await api.listIssues(
|
||||||
|
parsed && Object.keys(parsed).length > 0 ? parsed : undefined,
|
||||||
|
);
|
||||||
setIssues(result);
|
setIssues(result);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err instanceof Error ? err.message : "Error cargando issues");
|
setError(err instanceof Error ? err.message : "Error cargando issues");
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
}, [filtersKey, filters]);
|
}, [filtersKey]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
void load();
|
void load();
|
||||||
|
|||||||
Reference in new issue
Block a user