one
Version:
One is a new React Framework that makes Vite serve both native and web.
39 lines (38 loc) • 1.25 kB
JavaScript
import {
useNavigation
} from "@react-navigation/native";
import { useCallback, useEffect, useRef, useState } from "react";
import { useOneRouter } from "../router/router";
function useLoadedNavigation() {
const { navigationRef } = useOneRouter(), navigation = useNavigation(), isMounted = useRef(!0), pending = useRef([]);
useEffect(() => (isMounted.current = !0, () => {
isMounted.current = !1;
}), []);
const flush = useCallback(() => {
if (isMounted.current) {
const pendingCallbacks = pending.current;
pending.current = [], pendingCallbacks.forEach((callback) => {
callback(navigation);
});
}
}, [navigation]);
return useEffect(() => {
navigationRef.current && flush();
}, [flush, navigationRef]), useCallback(
(fn) => {
pending.current.push(fn), navigationRef.current && flush();
},
[flush, navigationRef]
);
}
function useOptionalNavigation() {
const [navigation, setNavigation] = useState(null), loadNavigation = useLoadedNavigation();
return useEffect(() => {
loadNavigation((nav) => setNavigation(nav));
}, [loadNavigation]), navigation;
}
export {
useLoadedNavigation,
useOptionalNavigation
};
//# sourceMappingURL=useLoadedNavigation.js.map