首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >取消使用TypeError访问JSON数据的react.js

取消使用TypeError访问JSON数据的react.js
EN

Stack Overflow用户
提问于 2016-11-18 21:09:36
回答 1查看 58关注 0票数 0

这个问题涉及API、JSON格式的数据和React.js。

我试图从输出为JSON数组的API中访问数据,该数组的格式如下:

代码语言:javascript
运行
复制
{
  "success":true,
  "timestamp":1479498608,
  "source":"USD",
  "quotes":{
    "USDUSD":1,
    "USDJPY":110.644997,
    "USDCAD":1.351041,
    "USDRUB":64.628403,
    "USDCNY":6.879204,
    "USDMXN":20.623699
  }
}

现在我真正感兴趣的部分是各种货币对的“引号”值。

因此,使用react.js类:

代码语言:javascript
运行
复制
var TickerTrader = React.createClass({
  getInitialState: function() {
    return{};
  },
  componentDidMount: function() {
    var component = this;
    $.get("http://apilayer.net/api/live?access_key=4a368d8077807c97b3aff9415a4d4995&currencies=USD,JPY,CAD,RUB,CNY,MXN&format=1", function(data) {
      component.setState(data);
    });
  },
  render: function() {
    return (
      <div>USD/JPY: {this.state.quotes.USDJPY}</div>
    );
  }
});

然而,这似乎行不通。我想知道,如果我想访问与USDJPY相对应的值,我将如何做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 21:20:03

问题不在于API调用没有更新状态,而是在初始加载时quotes将未定义,从而导致错误。这实际上是与Javascript有关的,而不是反应。

代码语言:javascript
运行
复制
render: function() {
  // on initial load quotes will be undefined
  return (
    <div>USD/JPY: {this.state.quotes ? this.state.quotes.USDJPY : null}</div>
  );
}

相反,您可以在状态中加载初始架构。

代码语言:javascript
运行
复制
getInitialState: function() {
  return {
    quotes: {}
  };
},

当属性不存在时,Javascript似乎可以返回undefined,但当您访问属性的对象未定义时,它将引发异常。

代码语言:javascript
运行
复制
let foo = {}
foo.test
// undefined
foo.test.fail
// Uncaugt TypeError: Cannot read property 'fail' of undefined
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40685975

复制
相关文章

相似问题

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