Note: I could make a PR for this if this package is still being maintained and is open to PRs, but seeing as the directory structure only includes a dist folder, I assume this package only includes the JS-compiled package.
I was looking to wrap the RN AppState in my own custom hook and came across this package. While there's some functionality I still wish to add myself, I noticed that it looked like the hook has appState as a dependency, which creates a lot of excess listener creations and cleanups.
By modifying the handleAppStateChange function to:
function handleAppStateChange(nextAppState) {
setAppState((prevAppState) => {
if (nextAppState === 'active' && prevAppState !== 'active')
isValidFunction(onForeground) && onForeground();
else if (prevAppState === 'active' && nextAppState.match(/inactive|background/))
isValidFunction(onBackground) && onBackground();
});
isValidFunction(onChange) && onChange(nextAppState);
}
and make the dependency list: [onChange, onForeground, onBackground] so that changes to the appState do not trigger the creation of a new AppState listener after the previous listener is cleaned up.
This change isn't strictly necessary, since the hook's appState and callback function calls remain unaffected by the number of times the change listeners are added/removed, but it was just something I noticed while testing the two methods.
Note: I could make a PR for this if this package is still being maintained and is open to PRs, but seeing as the directory structure only includes a
distfolder, I assume this package only includes the JS-compiled package.I was looking to wrap the RN AppState in my own custom hook and came across this package. While there's some functionality I still wish to add myself, I noticed that it looked like the hook has
appStateas a dependency, which creates a lot of excess listener creations and cleanups.By modifying the
handleAppStateChangefunction to:and make the dependency list:
[onChange, onForeground, onBackground]so that changes to theappStatedo not trigger the creation of a new AppState listener after the previous listener is cleaned up.This change isn't strictly necessary, since the hook's
appStateand callback function calls remain unaffected by the number of times the change listeners are added/removed, but it was just something I noticed while testing the two methods.