Javascript 快速反应useState和useEffect

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

我正在尝试将一个旧样式的react类转换为一个使用useState和useEffect而不是this.setState和componentDidMount的新函数,但无法使其正常工作-有人能帮我看看我做错了什么吗-发现挂钩非常混乱-谢谢

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,所以我添加了这一行。