UNPKG

relay-hooks

Version:
61 lines (51 loc) 1.91 kB
import { useRef, useEffect } from 'react'; import { getOrCreateQueryFetcher } from './QueryFetcher'; import { useForceUpdate } from './useForceUpdate'; import { useRelayEnvironment } from './useRelayEnvironment'; import { forceCache } from './Utils'; var useInternalQuery = function (gqlQuery, variables, options, suspense) { var environment = useRelayEnvironment(); var forceUpdate = useForceUpdate(); var ref = useRef(undefined); var maybeHiddenOrFastRefresh = useRef(false); if (ref.current === null || ref.current === undefined || maybeHiddenOrFastRefresh.current == true) { ref.current = { queryFetcher: getOrCreateQueryFetcher(suspense, gqlQuery, variables, options.networkCacheConfig) }; maybeHiddenOrFastRefresh.current = false; } useEffect(function () { if (maybeHiddenOrFastRefresh.current == true) { forceUpdate(); } return function () { ref.current.queryFetcher.dispose(); maybeHiddenOrFastRefresh.current = true; }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); var queryFetcher = ref.current.queryFetcher; queryFetcher.resolve(environment, gqlQuery, variables, options); queryFetcher.checkAndSuspense(suspense, suspense); queryFetcher.setForceUpdate(forceUpdate); return queryFetcher.getData(); }; export var useQuery = function (gqlQuery, variables, options) { if (variables === void 0) { variables = {}; } if (options === void 0) { options = {}; } return useInternalQuery(gqlQuery, variables, options, false); }; export var useLazyLoadQuery = function (gqlQuery, variables, options) { var _a; if (variables === void 0) { variables = {}; } if (options === void 0) { options = {}; } options.networkCacheConfig = (_a = options.networkCacheConfig) !== null && _a !== void 0 ? _a : forceCache; return useInternalQuery(gqlQuery, variables, options, true); };