Tengo la siguiente estructura:
Lo que estoy tratando de hacer es actualizar las métricas con nuevos datos:
const [data, setData] = useState<any>({}); getServerResourceUsage(serverId, intervalTime) .then(res => { setData((state: any) => ({ ...res.data.data, metrics: { time_series: state.metrics.time_series.concat(res.data.data.metrics.time_series) } })); }) .catch(error => { console.log(error.response) }) .finally(() => { setLoading(false); });Ahora lo que me sale es el siguiente error:
Estoy luchando por descubrir por qué el estado está vacío y cómo puedo incluso registrar su valor en la consola para depurar el problema.
Cambie la forma en que declara el estado, para que no le dé un error en la primera búsqueda.
const [data, setData] = useState<any>({ metrics: { time_series: [] } });Y el parámetro setState debe ser un dato nuevo en lugar de una devolución de llamada.
setData({ ...res.data.data, metrics: { time_series: data.metrics.time_series.concat(res.data.data.metrics.time_series) } });O también puede difundir series temporales existentes:
setData({ ...res.data.data, metrics: { time_series: [...data.metrics.time_series, ...res.data.data.metrics.time_series] } });