我是React的新手,在使用useState/useEffect时遇到了问题:
function WinesInMyCave() {
const [winesList, setWinesList] = useState({});
const [isDataLoading, setDataLoading] = useState(false);
useEffect(() => {
console.log("Got this far 1");
async function fetchWine() {
console.log("Got this far 2");
setDataLoading(true);
const response = await fetch("http://localhost:3000/api/wines", {
method: "GET",
})
const { winesList } = await response.json()
setWinesList(winesList)
setDataLoading(false)
}
fetchWine()
}, []);
console.log(winesList);
console.log(isDataLoading);
return (
...
)
使用我添加的console.logs,我看到useEffect从未被调用,因此fetchWine函数也没有被调用。
如果我设置const [isDataLoading, setDataLoading] = useState(**true**);
我看到useEffect被称为(“Got this far”1 & 2 showing)
有人能帮帮我吗
先谢谢你了
2条答案
按热度按时间nhaq1z211#
尝试只在useEffect中保留函数调用。
将函数本身放置在外部
此外,只有在获得数据后才将loading设置为false。
代码应该看起来像这样:
s6fujrry2#
解决方案如下:
我设置了winesList有一个对象,但是API发送了一个数组,而且它需要删除
const { winesList } = await response.json()
的{},因为它不需要解构常量。谢谢你的帮助!