[英]Add object array to setState
我正在尝试在 state 系列中添加一个 object 数组。 使用此代码,useEffect function 陷入无限循环。 我该如何解决这个问题? 如果不添加系列 const 作为参数,我会收到有关缺少依赖项的错误,并且代码只会在启动时运行。
import React, { useState, useEffect } from "react";
const LineChart = () => {
const [series, setSeries] = useState([]);
useEffect(() => {
const url = "http://localhost:4000";
const fetchData = async () => {
try {
fetch(url, {
method: "GET",
})
.then((response) => response.json())
.then((data) => {
let chartData = data.testRunSummaries
.map(function (testrun) {
return {
duration: testrun.endTime - testrun.startTime,
label: testrun.testSetName + "#" + testrun.userFacingId,
testrun: testrun.testRunId,
status: testrun.status,
};
});
setSeries(chartData, ...series);
console.log(series);
});
} catch (error) {
console.log(error);
}
};
fetchData();
}, [series]);
return (
...
);
};
export default LineChart;
series
在你的useEffect
依赖数组中。 而你的useEffect
正在改变series
。 所以很明显你会陷入无限循环。
您不需要将您的series
设置为useEffect
的依赖项。 由于您的useEffect
只会在挂载时触发一次,因此您只需
setSeries(chartData);
如果你真的需要以前的series
值,你应该使用
setSeries(series => [...chartData, ...series]);
此外,看到你的
setSeries(chartData, ...series);
console.log(series);
让我提醒您setState
是异步的,这将无法记录您更新的 state :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.