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

时间:2018-06-15 18:01:36

标签: reactjs

我有以下代码:

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,name等的对象,如下所示:

{id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "6545.84", …}

如何访问名称或ID?我尝试了console.log(test.id)或console.log(test [“id”]但他们一直给我错误。

这是我得到的错误:

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">

由于

1 个答案:

答案 0 :(得分:0)

执行提取asynchronously。所以,你的componentDidUpdate应该是:

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

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