Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript I';我想争取一个月的时间';来自API的天气数据的价值_Javascript_Reactjs_Axios - Fatal编程技术网

Javascript I';我想争取一个月的时间';来自API的天气数据的价值

Javascript I';我想争取一个月的时间';来自API的天气数据的价值,javascript,reactjs,axios,Javascript,Reactjs,Axios,我正在构建一个React应用程序,它使用黑暗天空天气API。我想得到一个月的天气数据。然后我试着重复每天的每一个小时,看看天气是低于62度还是高于75度。如果是,它将为每个范围增加一个计数器。我设法得到了总次数低于62次或高于75次。但我也在试图得到每一天这两者的总量,我不知道如何计算。我最初的想法是使用getDailyData()方法将每天的数据推送到状态。但是,当我控制台记录heatingData或acData时,它不包含31天的数据。它有几百个副本。到目前为止,我就是这样。任何帮助都将不胜

我正在构建一个React应用程序,它使用黑暗天空天气API。我想得到一个月的天气数据。然后我试着重复每天的每一个小时,看看天气是低于62度还是高于75度。如果是,它将为每个范围增加一个计数器。我设法得到了总次数低于62次或高于75次。但我也在试图得到每一天这两者的总量,我不知道如何计算。我最初的想法是使用getDailyData()方法将每天的数据推送到状态。但是,当我控制台记录heatingData或acData时,它不包含31天的数据。它有几百个副本。到目前为止,我就是这样。任何帮助都将不胜感激

    import React, { Component } from 'react';
    import DisplayCount from "./components/DisplayCount"
    import axios from "axios";

    class App extends Component {
      constructor(props) {
        super(props);
        this.state = {
          heatingData: [],
          acData: [],
          airConditioningCount: 0,
          heatingCount: 0
        }
      }

      componentDidMount = () => {
        this.getDailyData();
      }

      getDailyData = () => {

        for (let i = 1; i <= 31; i++) {

          const proxy = `https://cors-anywhere.herokuapp.com/`;
          const apiURL = `https://api.darksky.net/forecast/8b01861d3b06ab86ba285ef08d52c88d/45.5898,-122.5951,2018-05-${[i] < 10 ? "0" + [i] : [i]}T00:00:00`;

          axios(proxy + apiURL)
            .then(response => {
              return response.data.hourly.data;
            })
            .then(res => {
              this.setState(prevState => ({
                acData: [...prevState.acData, res],
                heatingData: [...prevState.heatingData, res]
              }))
              res.forEach(id => {
              if (id.temperature > 75) {
                this.setState(prevState =>({
                    airConditioningCount: prevState.airConditioningCount + 1
                }))
              } else if (id.temperature < 62){
                this.setState(prevState =>({
                  heatingCount: prevState.heatingCount + 1
                }))
                }
              })
            })
        }
      }

      render() {
        return (
          <div className="App">
            <h1 className="title">HVAC Report</h1>
            <h3 className="subtitle">(Month of May 2018)</h3>
            <div className="display-container">
              <DisplayCount
                countTitle={"Total AC Count"}
                countTotal={this.state.airConditioningCount} />
              <DisplayCount
                countTitle={"Total Heating Count"}
                countTotal={this.state.heatingCount} />
            </div>
          </div>
        );
      }
    }

const DisplayCount = (props) => {
  return (
    <div className="display-count">
      <h2>{props.countTitle}</h2>
      <p>{props.countTotal}</p>
    </div>
  );
}


    export default App;
import React,{Component}来自'React';
从“/components/DisplayCount”导入DisplayCount
从“axios”导入axios;
类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
加热数据:[],
acData:[],
空调计数:0,
加热次数:0
}
}
componentDidMount=()=>{
这是.getDailyData();
}
getDailyData=()=>{
for(设i=1;i{
返回response.data.hourly.data;
})
。然后(res=>{
this.setState(prevState=>({
acData:[…prevState.acData,res],
heatingData:[…prevState.heatingData,res]
}))
res.forEach(id=>{
如果(id温度>75){
this.setState(prevState=>({
airConditioningCount:prevState.airConditioningCount+1
}))
}否则,如果(id.温度<62){
this.setState(prevState=>({
heatingCount:prevState.heatingCount+1
}))
}
})
})
}
}
render(){
返回(
暖通空调报告
(2018年5月)
);
}
}
const DisplayCount=(道具)=>{
返回(
{props.countTitle}
{props.countTotal}

); } 导出默认应用程序;
我想我做了你想做的事。我创建了一个函数,它创建了一个对象,该对象在一个月的每一天都有键。所以它是
var month={1:{},2:{},3:{}
等等。。。在每个物体的上面和下面都有显示当天温度上升到75度以上或62度以下的按键。第二件事,您正在使用的API没有以毫秒为单位返回正确的时间,所以我需要修复它。我想你会明白为什么


这是一个codesendbox链接,您可以在其中找到解决方案:

您的代码有问题。我试着用它来制作codesendbox,但什么也没呈现出来。如果你能让codesendbox供我们使用,那么帮助你会容易得多。奇怪的是,我认为这与package.json文件中没有添加的“axios”包有关。但是我加了它,现在它工作了,伙计,非常感谢你!它就像一个符咒。你太棒了:)