Почему я не могу получить доступ к значению свойства объекта, полученного в результате вызова API?
У меня есть два компонента в приложении React, оба указаны ниже.
Вот первый компонент с именем «Погода»
import React, { useState, useEffect } from "react";
import Styles from "./Weather.module.css";
import WeatherCard from "../Weather Card/WeatherCard.component";
const Weather = () => {
// Initializing State
//For Location
const [location, setLocation] = useState("karachi");
//For Location
//For Query
const [query, setQuery] = useState(location);
//For Query
//For Weather Data
const [weatherData, setWeatherData] = useState({});
//For Weather Data
// Initializing State
// Calling data through api
useEffect(() => {
const fetchingData = async () => {
let url = `https://api.openweathermap.org/data/2.5/weather?q=${query}&appid=6a571911f99d7d02c4974a178ff1d933`;
let responseFromFetch = await fetch(url); // getting obj of promise.
let data = await responseFromFetch.json(); // getting api/weather data.
setWeatherData(data); // setting state that comes from api.
};
fetchingData(); // calling func that brings the data
}, [query]);
const handleSubmit = (e) => {
e.preventDefault();
setQuery(location);
setLocation("");
};
return (
<>
<div className={Styles.formContainer}>
<form onSubmit={handleSubmit}>
<input
className={Styles.inputField}
type="text"
placeholder="Know Your City Weather!"
value={location}
onChange={(e) => setLocation(e.target.value)}
/>
<button type="submit" className={Styles.button}>
Search
</button>
</form>
</div>
<WeatherCard weatherData={weatherData} />
</>
);
};
export default Weather;
Хорошо, теперь вот второй Компонент с именем «WeatherCard»
import React, { Component } from "react";
import Styles from "../Whether/Weather.module.css";
export default class WeatherCard extends Component {
render() {
const accessObj = this.props.weatherData;
console.log(accessObj); // getting whole obj - No error,
console.log(accessObj.name); // getting the value of the key "name" - No error, accessObj.name isn't an object
console.log(accessObj.sys); // getting obj - No error, accessObj.sys is an object
console.log(accessObj.sys.country); // Not getting the value of key "country" - Error
if (accessObj !== "undefined") {
return (
<>
<div className={Styles.wrapper}>
<div className={Styles.weatherContainer}>
<div className={Styles.cityContainer}>
<p className={Styles.city}>{accessObj.name}</p>
</div>
<div className={Styles.countryContainer}>
{/* I want here to use the value of the property... But country is not available here. */}
<p className={Styles.country}>{accessObj.sys.country}</p>
</div>
<div className={Styles.tempContainer}>
<p className={Styles.temp}>30 C</p>
</div>
<div className={Styles.humidityContainer}>
<p className={Styles.humidity}>100</p>
</div>
</div>
</div>
</>
);
}
}
}
Вы также можете увидеть ошибку, возникающую в браузере. Ссылка на скриншот: ЗДЕСЬ . Не удалось прикрепить сюда снимок экрана с ошибкой, потому что я новичок в этой платформе!
Заранее спасибо за помощь!