From 30787e347d97138fb094f566f0aae57d6445c35f Mon Sep 17 00:00:00 2001 From: dev-rb Date: Mon, 10 Feb 2025 14:01:46 -0500 Subject: [PATCH] Don't create promise when not enabled --- packages/solid-query/src/createBaseQuery.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/solid-query/src/createBaseQuery.ts b/packages/solid-query/src/createBaseQuery.ts index 120b67dd97..dc7c0a85d4 100644 --- a/packages/solid-query/src/createBaseQuery.ts +++ b/packages/solid-query/src/createBaseQuery.ts @@ -230,13 +230,27 @@ export function createBaseQuery< Fixes #7275 In a few cases, the observer could unmount before the resource is loaded. This leads to Suspense boundaries to be suspended indefinitely. - This resolver will be called when the observer is unmounting + This resolver will be called when the observer is unmounting but the resource is still in a loading state */ let resolver: ((value: ResourceData) => void) | null = null const [queryResource, { refetch }] = createResource( () => { const obs = observer() + + if(obs.options.enabled === false){ + // Just in case, unsubscribe from observer if we did subscribe + if(unsubscribe){ + unsubscribe() + } + + // Use the default/previous state when not enabled + // Remove the promise since it's not serializable by seroval in case we're on the server + const { promise, ...rest } = hydratableObserverResult(obs.getCurrentQuery(), state) + + return rest + } + return new Promise((resolve, reject) => { resolver = resolve if (isServer) {