【发布时间】:2021-03-17 14:58:23
【问题描述】:
我正在使用随机用户 api 通过 setInterval 函数获取用户信息,我的 useEffect 看起来像这样;
// Users.js
useEffect(() => {
const getUser = () => {
fetch("https://randomuser.me/api")
.then((res) => res.json())
.then((data) =>
setUsers((prevUsers) => {
return setUsers([
...prevUsers,
{ key: data.results[0].login.uuid, value: data.results[0] },
]);
})
);
console.log("cleanup?");
};
getUser();
// const userInterval = setInterval(getUser, 5000);
// return () => clearInterval(userInterval);
}, []);
我使用反应导航在另一个页面中显示每个用户的详细信息并像这样导航;
<TouchableOpacity
onPress={() => navigation.navigate("userDetails", item.value)}>
所以当我导航到详细信息页面时,useEffect 没有返回,这意味着组件没有卸载。实际上,由于堆栈导航,页面基本上位于每个页面的顶部并且仍在运行。那么在这种情况下如何停止我的区间函数呢?
【问题讨论】:
标签: reactjs react-native react-hooks