UNPKG

one

Version:

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

76 lines 3.01 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var useFocusEffect_exports = {}; __export(useFocusEffect_exports, { useFocusEffect: () => useFocusEffect }); module.exports = __toCommonJS(useFocusEffect_exports); var import_react = require("react"); var import_useLoadedNavigation = require("./link/useLoadedNavigation.cjs"); function useFocusEffect(effect, deps) { const navigation = (0, import_useLoadedNavigation.useOptionalNavigation)(); (0, import_react.useEffect)(() => { if (!navigation) { return; } let isFocused = false; let cleanup; const callback = () => { const destroy = effect(); if (destroy === void 0 || typeof destroy === "function") { return destroy; } if (process.env.NODE_ENV !== "production") { let 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; } const unsubscribeFocus = navigation.addListener("focus", () => { if (isFocused) return; cleanup?.(); cleanup = callback(); isFocused = true; }); const unsubscribeBlur = navigation.addListener("blur", () => { cleanup?.(); cleanup = void 0; isFocused = false; }); return () => { cleanup?.(); unsubscribeFocus(); unsubscribeBlur(); }; }, [navigation, ...deps]); }