【发布时间】:2021-03-31 23:24:15
【问题描述】:
我想根据 API 的响应将类更改为我的 div 容器。更具体地说,如果 API 返回超过 0 度的温度,我希望背景为红色,如果低于我希望它为蓝色。 (稍后将是图像,但现在是颜色。)
我想检查一下celsius={this.state.celsius}。
使用所有代码更新
import './App.css';
import React from 'react';
import Header from './components/Header';
import Footer from './components/Footer';
import Search from './components/Search';
import Form from './components/Form';
const API_KEY = '*********************'
class App extends React.Component {
constructor(){
super();
this.state = {
city: undefined,
celsius: undefined,
wind: undefined,
feelsLike: undefined
};
}
evenDeagree(temp){
let cell = Math.floor(temp)
return cell;
}
getWeather = async (e) => {
try {
e.preventDefault();
"city."
const city= e.target.elements.city.value;
datan.
if(city){
const api_call = await fetch(
`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${API_KEY}`
);
reponse
const response = await api_call.json();
console.log(response)
this.setState({
city: "City: " + `${response.name}`,
celsius: "Current Degree: " + this.evenDeagree(response.main.temp) + "°C",
wind: "Wind m/s: " + this.evenDeagree(response.wind.speed),
feelsLike: "Känns som: " + this.evenDeagree(response.main.feels_like) + "°C"
});
}
}
catch(error) {
document.getElementById("errMessage").innerHTML = "City not found, please try again";
}
}
render(){
return(
<div className="App">
<Header />
<div className="mainContainer">
<Form loadweather={this.getWeather}/>
<div className={this.state.celsius > 0 ? "red" : "blue"}>
<Search
city={this.state.city}
celsius={this.state.celsius}
wind={this.state.wind}
feelsLike={this.state.feelsLike}
/>
</div>
</div>
<Footer />
</div>
);
}
}
【问题讨论】:
-
您希望根据条件将班级设为
background-color-red或background-color-blue或background-color-standard? -
您可以在这里使用三元运算符来确定要分配哪个类,例如
className={this.state.celsius > 0 ? "red" : "blue"} -
是的,虽然我可以在两个不同的类上应用 2 个不同的背景图像,并根据 API 响应的内容切换类,在这种情况下 response.main.temp >= 0。希望这是有道理的。