UNPKG

@data-client/react

Version:

Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch

40 lines 4.94 kB
import { useEffect, useRef } from 'react'; const fakeNavigation = { addListener(name) {} }; let _useNavigation = () => fakeNavigation; import('@react-navigation/native').then(rn => { _useNavigation = rn.useNavigation; }).catch(() => {}); function useFocusEffect(effect, deps, runOnMount = false) { let navigation; // if we aren't in react-navigation context, just ignore focus events try { navigation = _useNavigation(); } catch (_unused) { navigation = fakeNavigation; } const firstRenderRef = useRef(true); useEffect(() => { let onCancel; const unsubscribe = navigation.addListener('focus', () => { // don't run on first render - only refocuses if (firstRenderRef.current) { firstRenderRef.current = false; } else { if (onCancel) onCancel(); onCancel = effect(); } }); if (runOnMount) { onCancel = effect(); } return () => { if (unsubscribe) unsubscribe(); if (onCancel) onCancel(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); } export default useFocusEffect; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJmYWtlTmF2aWdhdGlvbiIsImFkZExpc3RlbmVyIiwibmFtZSIsIl91c2VOYXZpZ2F0aW9uIiwidGhlbiIsInJuIiwidXNlTmF2aWdhdGlvbiIsImNhdGNoIiwidXNlRm9jdXNFZmZlY3QiLCJlZmZlY3QiLCJkZXBzIiwicnVuT25Nb3VudCIsIm5hdmlnYXRpb24iLCJfdW51c2VkIiwiZmlyc3RSZW5kZXJSZWYiLCJvbkNhbmNlbCIsInVuc3Vic2NyaWJlIiwiY3VycmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VGb2N1c0VmZmVjdC5uYXRpdmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyB1c2VOYXZpZ2F0aW9uLCBOYXZpZ2F0aW9uUHJvcCB9IGZyb20gJ0ByZWFjdC1uYXZpZ2F0aW9uL25hdGl2ZSc7XG5pbXBvcnQge1xuICB0eXBlIERlcGVuZGVuY3lMaXN0LFxuICB0eXBlIEVmZmVjdENhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbn0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBmYWtlTmF2aWdhdGlvbiA9IHsgYWRkTGlzdGVuZXIobmFtZTogc3RyaW5nKSB7fSB9IGFzIGFueTtcbmxldCBfdXNlTmF2aWdhdGlvbjogdHlwZW9mIHVzZU5hdmlnYXRpb24gPSAoKSA9PiBmYWtlTmF2aWdhdGlvbjtcbmltcG9ydCgnQHJlYWN0LW5hdmlnYXRpb24vbmF0aXZlJylcbiAgLnRoZW4ocm4gPT4ge1xuICAgIF91c2VOYXZpZ2F0aW9uID0gcm4udXNlTmF2aWdhdGlvbjtcbiAgfSlcbiAgLmNhdGNoKCgpID0+IHt9KTtcblxuZnVuY3Rpb24gdXNlRm9jdXNFZmZlY3QoXG4gIGVmZmVjdDogRWZmZWN0Q2FsbGJhY2ssXG4gIGRlcHM/OiBEZXBlbmRlbmN5TGlzdCxcbiAgcnVuT25Nb3VudCA9IGZhbHNlLFxuKSB7XG4gIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uUHJvcDxSZWFjdE5hdmlnYXRpb24uUm9vdFBhcmFtTGlzdD47XG4gIC8vIGlmIHdlIGFyZW4ndCBpbiByZWFjdC1uYXZpZ2F0aW9uIGNvbnRleHQsIGp1c3QgaWdub3JlIGZvY3VzIGV2ZW50c1xuICB0cnkge1xuICAgIG5hdmlnYXRpb24gPSBfdXNlTmF2aWdhdGlvbigpO1xuICB9IGNhdGNoIHtcbiAgICBuYXZpZ2F0aW9uID0gZmFrZU5hdmlnYXRpb247XG4gIH1cbiAgY29uc3QgZmlyc3RSZW5kZXJSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG9uQ2FuY2VsOiBSZXR1cm5UeXBlPEVmZmVjdENhbGxiYWNrPjtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IG5hdmlnYXRpb24uYWRkTGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgLy8gZG9uJ3QgcnVuIG9uIGZpcnN0IHJlbmRlciAtIG9ubHkgcmVmb2N1c2VzXG4gICAgICBpZiAoZmlyc3RSZW5kZXJSZWYuY3VycmVudCkge1xuICAgICAgICBmaXJzdFJlbmRlclJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob25DYW5jZWwpIG9uQ2FuY2VsKCk7XG4gICAgICAgIG9uQ2FuY2VsID0gZWZmZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJ1bk9uTW91bnQpIHtcbiAgICAgIG9uQ2FuY2VsID0gZWZmZWN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh1bnN1YnNjcmliZSkgdW5zdWJzY3JpYmUoKTtcbiAgICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgZGVwcyk7XG59XG5leHBvcnQgZGVmYXVsdCB1c2VGb2N1c0VmZmVjdDtcbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FHRUEsU0FBUyxFQUNUQyxNQUFNLFFBQ0QsT0FBTztBQUVkLE1BQU1DLGNBQWMsR0FBRztFQUFFQyxXQUFXQSxDQUFDQyxJQUFZLEVBQUUsQ0FBQztBQUFFLENBQVE7QUFDOUQsSUFBSUMsY0FBb0MsR0FBR0EsQ0FBQSxLQUFNSCxjQUFjO0FBQy9ELE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUMvQkksSUFBSSxDQUFDQyxFQUFFLElBQUk7RUFDVkYsY0FBYyxHQUFHRSxFQUFFLENBQUNDLGFBQWE7QUFDbkMsQ0FBQyxDQUFDLENBQ0RDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRWxCLFNBQVNDLGNBQWNBLENBQ3JCQyxNQUFzQixFQUN0QkMsSUFBcUIsRUFDckJDLFVBQVUsR0FBRyxLQUFLLEVBQ2xCO0VBQ0EsSUFBSUMsVUFBeUQ7RUFDN0Q7RUFDQSxJQUFJO0lBQ0ZBLFVBQVUsR0FBR1QsY0FBYyxDQUFDLENBQUM7RUFDL0IsQ0FBQyxDQUFDLE9BQUFVLE9BQUEsRUFBTTtJQUNORCxVQUFVLEdBQUdaLGNBQWM7RUFDN0I7RUFDQSxNQUFNYyxjQUFjLEdBQUdmLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDbkNELFNBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBSWlCLFFBQW9DO0lBQ3hDLE1BQU1DLFdBQVcsR0FBR0osVUFBVSxDQUFDWCxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU07TUFDeEQ7TUFDQSxJQUFJYSxjQUFjLENBQUNHLE9BQU8sRUFBRTtRQUMxQkgsY0FBYyxDQUFDRyxPQUFPLEdBQUcsS0FBSztNQUNoQyxDQUFDLE1BQU07UUFDTCxJQUFJRixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCQSxRQUFRLEdBQUdOLE1BQU0sQ0FBQyxDQUFDO01BQ3JCO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsSUFBSUUsVUFBVSxFQUFFO01BQ2RJLFFBQVEsR0FBR04sTUFBTSxDQUFDLENBQUM7SUFDckI7SUFFQSxPQUFPLE1BQU07TUFDWCxJQUFJTyxXQUFXLEVBQUVBLFdBQVcsQ0FBQyxDQUFDO01BQzlCLElBQUlELFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNEO0VBQ0YsQ0FBQyxFQUFFTCxJQUFJLENBQUM7QUFDVjtBQUNBLGVBQWVGLGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=