我正在学习使用React(与hooks一起),想问一下我们每次进行的API调用是否都必须在useEffect hook中?
在我的测试应用程序中,我有一个工作模式,如下所示:我设置状态,然后在按钮点击后运行一个函数,该函数向我的API发送get请求,并在.then块中将接收到的数据追加到状态中。
我还有一个useEffect hook,仅在所述状态更改时运行(使用具有状态值的依赖项数组),并且它使用先前状态中的新数据设置另一个状态。该第二个状态是我应用程序在呈现块中呈现的内容。
通过这种方式,我的数据获取实际上发生在单击按钮时运行的函数中,而不是在useEffect本身中。 这似乎有效。
这是一种有效的模式吗?谢谢!
编辑:示例,这是在单击按钮时运行的函数
在我的测试应用程序中,我有一个工作模式,如下所示:我设置状态,然后在按钮点击后运行一个函数,该函数向我的API发送get请求,并在.then块中将接收到的数据追加到状态中。
我还有一个useEffect hook,仅在所述状态更改时运行(使用具有状态值的依赖项数组),并且它使用先前状态中的新数据设置另一个状态。该第二个状态是我应用程序在呈现块中呈现的内容。
通过这种方式,我的数据获取实际上发生在单击按钮时运行的函数中,而不是在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]);
}
);
}