动态加载的图表数据不显示 Chartjs React
Dynamically loaded chart data not showing Chartjs React
我创建了一个饼图来显示宠物小精灵的捕获率。 console.logs 一开始一切正常,但随后似乎继续 运行 因此数据不再正确显示。道具值是来自不同组件的 useState 变量。
这是我的代码:
const [captureRate, setCaptureRate] = useState();
// const [lossRate, setLossRate] = useState();
console.log("run");
let capture=[];
let notCapture=0;
console.log((props.nameForRate));
useEffect(() => {
axios.get('https://pokeapi.co/api/v2/pokemon-species/'+(props.nameForRate)+'/')
.then((res)=>{
let data=res.data;
capture[0] = data.capture_rate;
capture[1] = 255 - (data.capture_rate);
console.log(("it works " +capture));
setCaptureRate(capture);
});
console.log("here it is again " + captureRate[0]);
}, []);
return(
<>
<div className="componentInteriorDoughnut">
{/* <h3>Chart 2: Doughnut Chart</h3> */}
<div className="CaptureRate">
<Doughnut
data={{
labels: ['Captured', 'Not Captured'],
datasets: [{
label: 'Capture Rate',
data: captureRate,
backgroundColor: [
'rgb(42, 157, 143)',
'#f1f1f1',
],
borderWidth: 0,
// borderRadius:10,
},
您能否尝试为特定的值更改添加侦听器,此函数将在每次状态更改时调用。而不是下面的代码
useEffect(() => {},[])
相反,如果您可以指定要侦听的变量,则可以避免多次函数调用。
例如像这样使用
useEffect(() => {},[notCapture]);
在这种情况下,如果 notCaputure 变量发生任何变化,则只会触发函数
我创建了一个饼图来显示宠物小精灵的捕获率。 console.logs 一开始一切正常,但随后似乎继续 运行 因此数据不再正确显示。道具值是来自不同组件的 useState 变量。
这是我的代码:
const [captureRate, setCaptureRate] = useState();
// const [lossRate, setLossRate] = useState();
console.log("run");
let capture=[];
let notCapture=0;
console.log((props.nameForRate));
useEffect(() => {
axios.get('https://pokeapi.co/api/v2/pokemon-species/'+(props.nameForRate)+'/')
.then((res)=>{
let data=res.data;
capture[0] = data.capture_rate;
capture[1] = 255 - (data.capture_rate);
console.log(("it works " +capture));
setCaptureRate(capture);
});
console.log("here it is again " + captureRate[0]);
}, []);
return(
<>
<div className="componentInteriorDoughnut">
{/* <h3>Chart 2: Doughnut Chart</h3> */}
<div className="CaptureRate">
<Doughnut
data={{
labels: ['Captured', 'Not Captured'],
datasets: [{
label: 'Capture Rate',
data: captureRate,
backgroundColor: [
'rgb(42, 157, 143)',
'#f1f1f1',
],
borderWidth: 0,
// borderRadius:10,
},
您能否尝试为特定的值更改添加侦听器,此函数将在每次状态更改时调用。而不是下面的代码
useEffect(() => {},[])
相反,如果您可以指定要侦听的变量,则可以避免多次函数调用。 例如像这样使用
useEffect(() => {},[notCapture]);
在这种情况下,如果 notCaputure 变量发生任何变化,则只会触发函数