Javascript 快速反应useState和useEffect
我正在尝试将一个旧样式的react类转换为一个使用useState和useEffect而不是this.setState和componentDidMount的新函数,但无法使其正常工作-有人能帮我看看我做错了什么吗-发现挂钩非常混乱-谢谢Javascript 快速反应useState和useEffect,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在尝试将一个旧样式的react类转换为一个使用useState和useEffect而不是this.setState和componentDidMount的新函数,但无法使其正常工作-有人能帮我看看我做错了什么吗-发现挂钩非常混乱-谢谢 import React,{useState,useEffect} from 'react'; const App = function() { function getWeather(){ fetch('https://api.openwe
import React,{useState,useEffect} from 'react';
const App = function() {
function getWeather(){
fetch('https://api.openweathermap.org/data/2.5/weather?q=London&appid=6e93b3d15872f914c6929fed9ea71e9a')
.then(data => data.json())
.then(data => {
return data
})
}
const[weatherData,setData] = useState(getWeather())
useEffect(()=>{
setData(getWeather)
},[])
return(<div>
{weatherData.main.temp}
</div>)
}
export default App;
import React,{useState,useffect}来自“React”;
常量App=函数(){
函数getWeather(){
取('https://api.openweathermap.org/data/2.5/weather?q=London&appid=6e93b3d15872f914c6929fed9ea71e9a')
.then(data=>data.json())
。然后(数据=>{
返回数据
})
}
const[weatherData,setData]=useState(getWeather())
useffect(()=>{
setData(getWeather)
},[])
返回(
{weatherData.main.temp}
)
}
导出默认应用程序;
请像这样尝试
import React,{useState,useEffect} from 'react';
const App = function() {
function getWeather(){
fetch('https://api.openweathermap.org/data/2.5/weather?q=London&appid=6e93b3d15872f914c6929fed9ea71e9a')
.then(data => data.json())
.then(data => {
setData(data);
})
}
const[weatherData,setData] = useState([])
useEffect(()=>{
getWeather();
},[])
return(<div>
{weatherData.main?weatherData.main.temp:""}
</div>)
}
export default App;
import React,{useState,useffect}来自“React”;
常量App=函数(){
函数getWeather(){
取('https://api.openweathermap.org/data/2.5/weather?q=London&appid=6e93b3d15872f914c6929fed9ea71e9a')
.then(data=>data.json())
。然后(数据=>{
setData(数据);
})
}
常量[weatherData,setData]=useState([])
useffect(()=>{
getWeather();
},[])
返回(
{weatherData.main?weatherData.main.temp:}
)
}
导出默认应用程序;
谢谢,我试过了,但是得到了错误类型error:undefined不是对象(评估'weatherData.main.temp')对不起。我编辑了我的答案。请再试一次。非常感谢您,但是您能解释一下这一行用问号和引号做了什么吗?{weatherData.main?weatherData.main.temp:}如果weatherData.main不为空,我们可以显示weatherData.main.temp,但是weatherData.main为空,我们无法计算weatherData.main.temp,所以我添加了这一行。