gpt4 book ai didi

javascript - 使用 Reactjs Chartjs 和 axios 创建图表

转载 作者:行者123 更新时间:2023-12-05 07:28:09 24 4
gpt4 key购买 nike

您好,我正在使用 Reactjs 和 Chartjs 来创建动态图表

当我绘制来自 api 响应的 json 数据时收到错误。当我添加标签 ["a","b","c"] 和数据 [3424,34324,34234] 等硬编码数据时图表组件呈现,但当我使用从 api 响应加载数据时不呈现。

import React, { Component } from 'react';
import './App.css';
import axios from 'axios'
import Chart from './components/Chart';

class App extends Component {
constructor(){
super();
this.state = {
chartData:{}
}
}

componentDidMount() {
this.getChartData();
}

getChartData() {
axios.get("http://www.json-generator.com/api/json/get/coXIyroYAy?indent=2").then(res => {
const coin = res.data;
let labels = [];
let data = [];
coin.forEach(element => {
labels.push(element.labels);
data.push(element.data);

});

console.log(coin)
this.setState({
chartData: {
labels:labels,
datasets: [
{
label: "Population",
data: data,
backgroundColor: [
"rgba(255, 99, 132, 0.6)",
"rgba(54, 162, 235, 0.6)",
"rgba(255, 99, 132, 0.6)"
],
}
]
}
});
});
}

render(){

return (
<div className="App">
{Object.keys(this.state.chartData).length &&
<Chart
chartData={this.state.chartData}
location="Massachusetts"
legendPosition="bottom"
/>
}
</div>
);

}
}

export default App;

最佳答案

您需要在代码中进行两处调整。

1。在componentDidMount

中加载数据

改变这一行

componentWillMount = () => this.getChartData();

componentDidMount() {
this.getChartData();
}

一旦组件挂载到 DOM 上,您就需要加载数据。

2。仅当您有图表数据时才呈现

有条件地呈现 Chart 组件。

render() {
return (
<div className="App">
{Object.keys(this.state.chartData).length &&
<Chart
chartData={this.state.chartData}
location="Massachusetts"
legendPosition="bottom"
/>
}
</div>
);
}

只有在从 API 响应填充 chartData 之后,您才应该呈现您的 Chart

关于javascript - 使用 Reactjs Chartjs 和 axios 创建图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com