UNPKG

one

Version:

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

38 lines (30 loc) 1.29 kB
import { useNavigationContainerRef } from '@react-navigation/native' import { initialize } from './router' import * as routerStore from './router' import type { One } from '../vite/types' let initialized = false export function useInitializeOneRouter( context: One.RouteContext, initialLocation: URL | undefined ) { const navigationRef = useNavigationContainerRef() if (!initialized) { initialize(context, navigationRef, initialLocation) initialized = true } return routerStore } export function resetState() { initialized = false resetReactNavigationContexts() } // TODO remove global globalThis['__vxrnresetState'] = resetState function resetReactNavigationContexts() { // https://github.com/expo/router/discussions/588 // https://github.com/react-navigation/react-navigation/blob/9fe34b445fcb86e5666f61e144007d7540f014fa/packages/elements/src/getNamedContext.tsx#LL3C1-L4C1 // React Navigation is storing providers in a global, this is fine for the first static render // but subsequent static renders of Stack or Tabs will cause React to throw a warning. To prevent this warning, we'll reset the globals before rendering. const contexts = '__react_navigation__elements_contexts' globalThis[contexts] = new Map<string, React.Context<any>>() }