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