首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从coinmarketcap (reactjs)引用对象

无法从coinmarketcap (reactjs)引用对象
EN

Stack Overflow用户
提问于 2018-06-16 02:01:36
回答 1查看 76关注 0票数 0

我有下面这段代码:

代码语言:javascript
复制
class App extends Component {

  constructor() {
    super()
    this.state = {
      coins: []
    }
  }

  componentDidMount() {
    fetch('https://api.coinmarketcap.com/v1/ticker/')
    .then(response=>response.json())
    .then(data => this.setState({coins: data}));
  }


  render() {
    const test = this.state.coins[0];
    console.log(test);
    return (
      ...
    );
  }
}

export default App;

test返回一个具有id、名称等的对象,如下所示:

代码语言:javascript
复制
{id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "6545.84", …}

如何访问该名称或id?我尝试了console.log(test.id)或console.log(测试“id”),但他们总是给我错误。

这是我得到的错误:

代码语言:javascript
复制
TypeError: Cannot read property 'id' of undefined
App.render
src/App.js:23
  20 | 
  21 | render() {
  22 |   const test = this.state.coins[0];
> 23 |   console.log(test.id);
  24 |   return (
  25 |     <div className="App">
  26 |       <header className="App-header">

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-16 02:10:20

获取是在asynchronously中执行的。所以,你的componentDidUpdate应该是这样的:

代码语言:javascript
复制
async componentDidMount() {
    async fetch('https://api.coinmarketcap.com/v1/ticker/')
    .then(response=>response.json())
    .then(data => this.setState({coins: data}));
}

您遇到的问题是因为当您尝试获取硬币时,请求尚未完成。fetch()this.setState()是异步方法。

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

https://stackoverflow.com/questions/50880635

复制
相关文章

相似问题

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