【发布时间】:2020-08-04 11:57:38
【问题描述】:
我正在学习 React(使用钩子)并想问一下我们进行的每个 API 调用是否都必须在 useEffect 钩子内?
在我的测试应用程序中,我的工作模式是这样的:我设置状态,然后在单击按钮后运行一个向我的 API 发送 get 请求的函数,并在 .then 块中将接收到的数据附加到国家。
我还有一个 useEffect 钩子,它仅在所述状态更改时运行(使用具有状态值的依赖数组)并使用前一个状态的新数据设置另一个状态。第二个状态是我的应用在渲染块中渲染的内容。
这样,我的数据获取实际上是在一个按钮单击时运行的函数中进行的,而不是在 useEffect 本身中进行的。它似乎正在工作。
这是一个有效的模式吗?提前致谢!
编辑:例如,这是单击按钮时运行的函数
const addClock = timezone => {
let duplicate = false;
selectedTimezones.forEach(item => {
if (item.timezone === timezone) {
alert("Timezone already selected");
duplicate = true;
return;
}
});
if (duplicate) {
return;
}
let currentURL = `http://worldtimeapi.org/api/timezone/${timezone}`;
fetch(currentURL)
.then(blob=>blob.json())
.then(data => {
setSelectedTimezones(prevState => [...prevState, data]);
}
);
}
【问题讨论】:
-
你能展示一些代码示例吗?
标签: reactjs api react-hooks use-effect use-state