Я новичок в реагировании, и я пытался работать с api fetch.Я хочу получить некоторые данные о населении из API.Мне удалось получить данные, но когда я пытаюсь установить setState внутри выборки, диаграммы не обновляются с новым массивом.Ниже приведен мой код из app.js, надеюсь, этого достаточно:
class App extends Component {
constructor(){
super();
this.state = {
chartData:{}
}
}
componentWillMount(){
this.getChartData();
}
getChartData(){
let queryPost = {
"query": [
{
"code": "Region",
"selection": {
"filter": "vs:RegionLän07",
"values": [
"01"
]
}
},
{
"code": "ContentsCode",
"selection": {
"filter": "item",
"values": [
"BE0101N1"
]
}
}
],
"response": {
"format": "json"
}
}
fetch('https://api.scb.se/OV0104/v1/doris/sv/ssd/START/BE/BE0101/BE0101A/BefolkningNy'
,{
method:'post',
body:JSON.stringify(queryPost),
})
.then(response => response.json())
.then(result => result.data.map(obj => (
parseInt(obj.values[0])
)))
.then(newArr => this.setState({chartData:{
labels:['dsa','cava','daba','baba'],
datasets:[
{
label:'Populations',
data: [newArr[0],newArr[1],newArr[2]],
backgroundColor:[
'rgba(255,99,132,0.6)',
'rgba(100,100,2,0.6)',
'rgba(10,100,2,0.6)',
],
}
]
}},console.log(this.state.chartData))
)}
render(){
return (
<div className="content">
<div className="row justify-content-center align-items-center header">
<h1>Befolkningsinfo</h1>
</div>
<div className="row">
<div className="col-md-6 col-sm-12">
<div className="App">
</div>
</div>
<div className="col-md-6 col-sm-12">
<div className="App">
<BarChart chartData={this.state.chartData} title='Chart1'/>
</div>
</div>
</div>
<div className="row">
<div className="col-md-6 col-sm-12">
<div className="App">
</div>
</div>
<div className="col-md-6 col-sm-12">
<div className="App">
<PieChart chartData={this.state.chartData} title='Chart2'/>
</div>
</div>
</div>
</div>
)
}
}
export default App;