UNPKG

ayanami

Version:
20 lines (19 loc) 991 B
import * as React from 'react'; import get from 'lodash/get'; import { getInstanceWithScope, TransientScope, createScopeWithRequest, } from '../core'; import { DEFAULT_SCOPE_NAME } from '../ssr/constants'; import { isSSREnabled } from '../ssr/flag'; import { SSRContext } from '../ssr/ssr-context'; import { useAyanamiInstance, } from './use-ayanami-instance'; export function useAyanami(A, config) { const scope = get(config, 'scope'); const selector = get(config, 'selector'); const req = isSSREnabled() ? React.useContext(SSRContext) : null; const reqScope = req ? createScopeWithRequest(req, scope) : scope; const ayanami = React.useMemo(() => getInstanceWithScope(A, reqScope), [reqScope]); ayanami.scopeName = scope || DEFAULT_SCOPE_NAME; const useAyanamiInstanceConfig = React.useMemo(() => { return { destroyWhenUnmount: scope === TransientScope, selector }; }, [reqScope]); return useAyanamiInstance(ayanami, useAyanamiInstanceConfig); }