Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from "react";
  2. import Info from "./components/info";
  3. import Form from "./components/form";
  4. import Weather from "./components/weather";
  5.  
  6. const API_KEY = "fd5ace1207a82503f898861cbf598bc2";
  7.  
  8. class App extends React.Component {
  9.   state = {
  10.     temp: undefined,
  11.     city: undefined,
  12.     country: undefined,
  13.     pressure: undefined,
  14.     sunset: undefined,
  15.     error: undefined
  16.   };
  17.  
  18.   gettingWeather = async e => {
  19.     e.preventDefault();
  20.     const city = e.target.elements.city.value;
  21.  
  22.     if (city) {
  23.       const api_url = await fetch(
  24.         `http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${API_KEY}&units=metric`
  25.       );
  26.       const data = await api_url.json();
  27.  
  28.       var sunset = data.sys.sunset;
  29.       var date = new Date();
  30.       date.setTime(sunset);
  31.       var sunset_date =
  32.         date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
  33.  
  34.       this.setState({
  35.         temp: data.main.temp,
  36.         city: data.name,
  37.         country: data.sys.country,
  38.         pressure: data.main.pressure,
  39.         sunset: sunset_date,
  40.         error: undefined
  41.       });
  42.     } else {
  43.       this.setState({
  44.         temp: undefined,
  45.         city: undefined,
  46.         country: undefined,
  47.         pressure: undefined,
  48.         sunset: undefined,
  49.         error: "Введите название города"
  50.       });
  51.     }
  52.   };
  53.  
  54.   render() {
  55.     return (
  56.       <div className="wrapper">
  57.           <div className="container">
  58.             <div className="row">
  59.               <div></div>
  60.               <div></div>
  61.             </div>
  62.           </div>
  63.  
  64.  
  65.         <div className="form-weather">
  66.           <Info />
  67.           <Form weatherMethod={this.gettingWeather} />
  68.           <Weather
  69.             temp={this.state.temp}
  70.             city={this.state.city}
  71.             country={this.state.country}
  72.             pressure={this.state.pressure}
  73.             sunset={this.state.sunset}
  74.             error={this.state.error}
  75.           />
  76.         </div>
  77.       </div>
  78.     );
  79.   }
  80. }
  81.  
  82. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement