@shopify/react-graphql
Version:
Tools for creating type-safe and asynchronous GraphQL components for React
38 lines (35 loc) • 782 B
JavaScript
import { createResolver } from '@shopify/async';
import { useAsync, AssetTiming } from '@shopify/react-async';
import { useBackgroundQuery } from '../hooks/background-query.mjs';
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, {
pollInterval: 10000,
...options
});
}
return {
resolver,
usePreload,
usePrefetch,
useKeepFresh
};
}
export { createAsyncQuery };