@@ -26,14 +26,19 @@ export type Preloaded<Query extends FunctionReference<"query">> = {
2626 * Throws an error if not used under {@link ConvexProvider}.
2727 *
2828 * @param preloadedQuery - The `Preloaded` query payload from a Server Component.
29+ * @param options - Options for the query, including whether to skip it.
2930 * @returns the result of the query. Initially returns the result fetched
3031 * by the Server Component. Subsequently returns the result fetched by the client.
32+ * If the query is skipped, returns `undefined`.
3133 *
3234 * @public
3335 */
3436export function usePreloadedQuery < Query extends FunctionReference < "query" > > (
3537 preloadedQuery : Preloaded < Query > ,
36- ) : Query [ "_returnType" ] {
38+ options ?: { skip ?: boolean } ,
39+ ) : Query [ "_returnType" ] | undefined {
40+ const skip = options ?. skip ?? false ;
41+
3742 const args = useMemo (
3843 ( ) => jsonToConvex ( preloadedQuery . _argsJSON ) ,
3944 [ preloadedQuery . _argsJSON ] ,
@@ -42,9 +47,10 @@ export function usePreloadedQuery<Query extends FunctionReference<"query">>(
4247 ( ) => jsonToConvex ( preloadedQuery . _valueJSON ) ,
4348 [ preloadedQuery . _valueJSON ] ,
4449 ) ;
50+
4551 const result = useQuery (
4652 makeFunctionReference ( preloadedQuery . _name ) as Query ,
47- args ,
53+ skip ? ( "skip" as const ) : args ,
4854 ) ;
49- return result === undefined ? preloadedResult : result ;
55+ return skip ? undefined : result === undefined ? preloadedResult : result ;
5056}
0 commit comments