如何将两个返回语句添加到useEffect
挂钩?我想在我当前的钩子中添加一个事件侦听器。
事件侦听器:
const subscription = AppState.addEventListener("change", nextAppState => {
if (
appState.current.match(/inactive|background/) &&
nextAppState === "active"
) {
console.log("App has come to the foreground!");
}
appState.current = nextAppState;
setAppStateVisible(appState.current);
console.log("AppState", appState.current);
});
return () => {
subscription.remove();
};
当前挂钩:
useEffect(() => {
async function checkRefresh() {
if (
daysDiffToNow(lastUpdatedTimestamp) > 0 &&
appState.current.match(/inactive|background/) &&
nextAppState === "active"
) {
await onRefreshAppData();
}
}
checkRefresh();
const updateLastUpdatedTextCallback = (value) => {
setState((prevState) => ({
...
}));
};
const id = setInterval(() => {
updateLastUpdatedTextCallback(lastUpdatedTimestamp);
}, TIME_INTERVAL_IN_MILISECONDS);
return () => clearInterval(id);
}, [lastUpdatedTimestamp]);
const close = () => {
setState((prevState) => ({
...
}));
};
您可以简单地将它们从上到下放在useEffect
中,并有一个return
函数,如下所示(它同时执行所需的两个返回语句的代码(:
return () => {
subscription.remove(); // the first
clearInterval(id); // the second
};