【发布时间】:2019-07-27 05:33:15
【问题描述】:
我尝试创建一个从服务器获取数据的函数,它可以工作。 但我不确定这是否正确?
我创建了一个函数组件来获取数据,使用 useState、useEffect 和 Async/Await:
import React, { useState, useEffect } from "react";
const Fetch = () => {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
let res = await fetch(
"https://api.coindesk.com/v1/bpi/currentprice.json" //example and simple data
);
let response = await res.json();
setData(response.disclaimer); // parse json
console.log(response);
};
fetchData();
}, []);
return <div>{data}</div>;
};
export default Fetch; // don't run code snippet, not working, this component must be imported in main
我不确定是 where 调用 fetchData 函数的地方。我在useEffect里面做那个?正确的地点?而且,这个电话只会发生一次?因为我使用[]?
一般来说,你会怎么做这样的事情?
【问题讨论】:
-
您的代码看起来不错。是的,您在 useEffect 中执行此操作。是的,它只发生一次,因为您使用了
[ ]。 -
好的,正确的地方是下面的函数调用她?
-
是的,由于空数组,调用只会在组件安装时发生。第二个参数中的数组为钩子提供了观察变化的内容,并且只有在这些依赖项中的任何一个发生变化时才会应用效果。传入一个空告诉钩子你的组件不依赖于道具/状态,因此只会在组件挂载上应用钩子。
标签: javascript reactjs asynchronous async-await react-hooks