UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

52 lines (51 loc) 2.25 kB
import { useEffect } from "react"; import { useOptionalNavigation } from "./link/useLoadedNavigation.native.js"; function useFocusEffect(effect, deps) { var navigation = useOptionalNavigation(); useEffect(function () { if (!navigation) { return; } var isFocused = false; var cleanup; var callback = function () { var destroy = effect(); if (destroy === void 0 || typeof destroy === "function") { return destroy; } if (process.env.NODE_ENV !== "production") { var message = "An effect function must not return anything besides a function, which is used for clean-up."; if (destroy === null) { message += " You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing)."; } else if (typeof destroy.then === "function") { message += "\n\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. Instead, write the async function inside your effect and call it immediately:\n\nuseFocusEffect(\n React.useCallback(() => {\n async function fetchData() {\n // You can await here\n const response = await MyAPI.getData(someId);\n // ...\n }\n\n fetchData();\n }, [someId])\n);\n\nSee usage guide: https://reactnavigation.org/docs/use-focus-effect"; } else { message += ` You returned '${JSON.stringify(destroy)}'.`; } console.error(message); } }; if (navigation.isFocused()) { cleanup = callback(); isFocused = true; } var unsubscribeFocus = navigation.addListener("focus", function () { if (isFocused) return; cleanup === null || cleanup === void 0 ? void 0 : cleanup(); cleanup = callback(); isFocused = true; }); var unsubscribeBlur = navigation.addListener("blur", function () { cleanup === null || cleanup === void 0 ? void 0 : cleanup(); cleanup = void 0; isFocused = false; }); return function () { cleanup === null || cleanup === void 0 ? void 0 : cleanup(); unsubscribeFocus(); unsubscribeBlur(); }; }, [navigation, ...deps]); } export { useFocusEffect }; //# sourceMappingURL=useFocusEffect.native.js.map