首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Api反应本机更新状态

使用Api反应本机更新状态
EN

Stack Overflow用户
提问于 2021-01-04 20:02:20
回答 2查看 173关注 0票数 0
代码语言:javascript
运行
复制
   0

您好,我正在尝试从API更新状态数据值( data :[])。问题来自突出显示的行this.setState({data.datasets.data.data:response.data.rates.AUD})

代码语言:javascript
运行
复制
    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})
    
}
EN

回答 2

Stack Overflow用户

发布于 2021-01-04 20:24:50

这可能会有帮助

代码语言:javascript
运行
复制
this.setState({data: {
  ...this.state.data,
  datasets: [
    {
      label: this.state.data.datasets[0].label,
      data: response.data.rates.AUD,
    }
  ],
});
票数 0
EN

Stack Overflow用户

发布于 2021-01-04 20:25:44

我认为问题在于,您正在尝试更新对象中的属性的值,并且您必须对整个data属性执行此操作:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65562408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档