Javascript 使用react.js操作从每小时一次的API输入的值

Javascript 使用react.js操作从每小时一次的API输入的值,javascript,json,api,reactjs,Javascript,Json,Api,Reactjs,我从一个定期更新(每小时一次)的API中引入数据,例如: { "success":true, "terms":"https:\/\/currencylayer.com\/terms", "privacy":"https:\/\/currencylayer.com\/privacy", "timestamp":1479835508, "source":"USD", "quotes":{ "USDUSD":1, "USDJPY":110.971001, }

我从一个定期更新(每小时一次)的API中引入数据,例如:

{
  "success":true,
  "terms":"https:\/\/currencylayer.com\/terms",
  "privacy":"https:\/\/currencylayer.com\/privacy",
  "timestamp":1479835508,
  "source":"USD",
  "quotes":{
    "USDUSD":1,
    "USDJPY":110.971001,
  }
}
有些值是数值,这些值将发生变化。例如,一小时后,我可以:

{
  "success":true,
  "terms":"https:\/\/currencylayer.com\/terms",
  "privacy":"https:\/\/currencylayer.com\/privacy",
  "timestamp":1479835509,
  "source":"USD",
  "quotes":{
    "USDUSD":1,
    "USDJPY":111.03221,
  }
}
我从react.js类组件中调用API,如下所示(出于隐私原因,我省略了我的私有API访问密钥):

componentDidMount(){
var分量=此;
var MY_ACCESS_KEY=“”;
var MY_所选货币=“美元、日元、加元、卢布、人民币、英镑、欧元、BTC、瑞士法郎”
$.get(”http://apilayer.net/api/live?access_key=“+MY_ACCESS_KEY+”&Currences=“+MY_Selected_Currences+”&format=1”,函数(数据){
组件设置状态(数据)
});
}
我想知道,我是否能够以某种方式存储从API中提取的以前的JSON,这样我就可以计算USDJPY值的百分比变化>

注意:我理解它的数学运算-((USDJPY_new/USD_old)/USDJPY_old)*100=百分比变化-我只需要知道如何存储和访问数据。只是不知道如何记录以前的值来进行这样的计算

问:我想知道是否有一种方法可以将这些API数据存储在本地(只有以前的JSON被拉下来),然后当API中的数据发生变化时(而不是当有人重新加载网站时,即时间戳发生变化时),我就可以计算出这个百分比变化。

。这允许您在本地将序列化数据存储在键值存储中,以供以后访问

例如,您可以使用序列化API响应并存储它。除此之外,还要存储上次请求的日期和时间


现在,您可以将此时间戳与当前日期进行比较,并据此决定是否可以重用数据,或者数据是否过期,是否需要进行API调用。

您是否仅在
componentDidMount
上进行API调用?@arb Hi arb,是的……这不是一个好的做法?你能推荐一些更好的吗?在本地存储是否有效?我需要跟踪存储的数据,这可能会覆盖任何存储的API。如果需要保留历史数据,请将其设置为API响应数组。您可以存储任何可序列化的JS数据结构。嗨,Timo,我尝试了他们建议的一些方法,但恐怕无法在React.JS环境中使用。我可能可以帮助您。将你的尝试添加到问题中,描述你的问题,我会看一看。我只是发现了各种语法错误——我显然不知道如何使用指南。刚进入react.js。
  componentDidMount() {
    var component = this;
    var MY_ACCESS_KEY  = "<omitted private data>";
    var MY_CHOSEN_CURRENCIES = "USD,JPY,CAD,RUB,CNY,GBP,EUR,BTC,CHF"
      $.get("http://apilayer.net/api/live?access_key=" + MY_ACCESS_KEY + "&currencies=" + MY_CHOSEN_CURRENCIES + "&format=1", function(data) {
        component.setState(data)
      });
  }