我一定会错过一些非常直接的东西。我试图发出axios GET请求,然后在async / await函数中设置setState,我也尝试过fetch().then()
。undefined
除非我单击getData()
两次或将其放在单独的onClick()
事件中,否则console.log()会返回。我认为状态已正确设置,但console.log()
未按预期运行。有没有办法实现console.log()
与axios请求相同的功能?与往常一样,我们非常感谢您的帮助。谢谢!
import React, { useState } from "react";
import axios from "axios";
const SalesGraph = () => {
const [retrievedData, setretrievedData] = useState();
const getData = async () => {
try {
const salesData = await axios.get("http://localhost:5000/sales");
await setretrievedData(salesData);
console.log(retrievedData);
} catch (err) {
console.log(err);
}
};
const showState = () => {
console.log(retrievedData);
};
return (
<div>
<button onClick={getData}>Graph</button>
<button onClick={showState}>showState</button>
</div>
);
};
export default SalesGraph;
setretrievedData
是异步方法,您无法在retrievedData
之后立即获得更新的值setretrievedData
。
您需要useEffect
通过添加依赖项来获取它。
useEffect(() => {
console.log(retrievedData);
}, [ retrievedData ]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句