【发布时间】:2020-10-07 14:50:50
【问题描述】:
我对异步函数的工作原理感到困惑。
console.log 返回错误,因为 data.rates 尚不存在。但我认为因为 useEffect 函数是异步的,所以它下面的任何东西都会在异步结束后调用。
function App() {
const [data, setData] = useState();
useEffect(() => {
(async () => {
const result = await axios.get(
"https://open.exchangerate-api.com/v6/latest"
);
setData(result.data);
})();
}, []);
console.log(data.rates); <-- Error data.rates does not exist
return <div>{!data ? "Loading..." : "Hello"}</div>;
}
【问题讨论】:
-
最初您的状态
data未定义,因此您在记录时遇到错误。 -
状态更新后,您应该会看到记录的正确值。
标签: javascript reactjs async-await