@shopify/react-graphql
Version:
Tools for creating type-safe and asynchronous GraphQL components for React
24 lines (23 loc) • 765 B
JavaScript
import { createResolver } from '@shopify/async';
import { useAsync, AssetTiming } from '@shopify/react-async';
import { useBackgroundQuery } from '../hooks';
export function createAsyncQuery({ id, load, }) {
const resolver = createResolver({ id, load });
function usePreload() {
return useAsync(resolver, { assets: AssetTiming.NextPage }).load;
}
function usePrefetch(options) {
const load = usePreload();
return useBackgroundQuery(load, options);
}
function useKeepFresh(options) {
const load = usePreload();
return useBackgroundQuery(load, Object.assign({ pollInterval: 10000 }, options));
}
return {
resolver,
usePreload,
usePrefetch,
useKeepFresh,
};
}