0
您好,我正在尝试从API更新状态数据值( data :[])。问题来自突出显示的行this.setState({data.datasets.data.data:response.data.rates.AUD})
import React from 'react';
import {Bar} from 'react-chartjs-2';
import axios from 'axios';
class App extends React.Component {
constructor(props) {
super(props)
this.state = {
data: {
labels:["UK"],
datasets:[
{label:"Dev Test",data:[]}
]
}}
this.test = this.test.bind(this)
}
async test() {
const response = await axios.get("https://api.exchangeratesapi.io/latest")
this.setState({data.datasets[0].data[0]:response.data.rates.AUD})
}
发布于 2021-01-04 20:24:50
这可能会有帮助
this.setState({data: {
...this.state.data,
datasets: [
{
label: this.state.data.datasets[0].label,
data: response.data.rates.AUD,
}
],
});
发布于 2021-01-04 20:25:44
我认为问题在于,您正在尝试更新对象中的属性的值,并且您必须对整个data
属性执行此操作:
this.setState({data: {
...this.state.data,
datasets: [
{
label: this.state.data.datasets[0].label,
data: response.data.rates.AUD,
}
],
});
我并不认为我写的这段代码是正确的,因为我不理解你的数据结构,但是我的想法是,你必须一起更新整个data
状态,保留你想要保留的旧数据,并更新新数据。您不能直接更新对象数组中的属性。不过,您可以单独更新第一级属性。检查这个:https://itnext.io/react-setstate-usage-and-gotchas-ac10b4e03d60
https://stackoverflow.com/questions/65562408
复制相似问题