@gqty/react
Version:
The No-GraphQL Client for React
32 lines (29 loc) • 971 B
JavaScript
import { useMemo, useEffect } from 'react';
import { getDefault } from '../utils.mjs';
const IS_SERVER = typeof window === "undefined";
function createSSRHelpers({ hydrateCache, prepareRender, query, refetch }, { defaults: { refetchAfterHydrate } }) {
const prepareReactRender = async function prepareReactRender2(element) {
const ssrPrepass = getDefault(await import('react-ssr-prepass'));
return prepareRender(() => ssrPrepass(element));
};
const useHydrateCache = function useHydrateCache2({
cacheSnapshot,
shouldRefetch = refetchAfterHydrate
}) {
useMemo(() => {
if (!IS_SERVER && cacheSnapshot) {
hydrateCache({ cacheSnapshot, shouldRefetch: false });
}
}, [cacheSnapshot]);
useEffect(() => {
if (!IS_SERVER && shouldRefetch) {
refetch(query).catch(console.error);
}
}, [shouldRefetch]);
};
return {
useHydrateCache,
prepareReactRender
};
}
export { createSSRHelpers };