diff --git a/packages/vue-apollo-composable/src/useApolloClient.ts b/packages/vue-apollo-composable/src/useApolloClient.ts index ed1a1cd..76163ac 100644 --- a/packages/vue-apollo-composable/src/useApolloClient.ts +++ b/packages/vue-apollo-composable/src/useApolloClient.ts @@ -32,15 +32,18 @@ function resolveClientWithId (providedApolloClients: ClientDict | null, cl export function useApolloClient (clientId?: ClientId): UseApolloClientReturn { let resolveImpl: ResolveClient> + // Save current client in current closure scope + const savedCurrentClient = currentApolloClient + if (!getCurrentInstance()) { - resolveImpl = () => currentApolloClient + resolveImpl = () => savedCurrentClient } else { const providedApolloClients: ClientDict | null = inject(ApolloClients, null) const providedApolloClient: ApolloClient | null = inject(DefaultApolloClient, null) resolveImpl = (id?: ClientId) => { - if (currentApolloClient) { - return currentApolloClient + if (savedCurrentClient) { + return savedCurrentClient } else if (id) { return resolveClientWithId(providedApolloClients, id) }