diff --git a/src/data-fetching_new/defineLoader.spec.ts b/src/data-fetching_new/defineLoader.spec.ts index 44ad7f00d..da668853e 100644 --- a/src/data-fetching_new/defineLoader.spec.ts +++ b/src/data-fetching_new/defineLoader.spec.ts @@ -17,16 +17,12 @@ import { import { setCurrentContext } from './utils' import { enableAutoUnmount, mount } from '@vue/test-utils' import { getRouter } from 'vue-router-mock' -import { DataLoaderPlugin, setupLoaderGuard } from './navigation-guard' +import { DataLoaderPlugin } from './navigation-guard' import { UseDataLoader } from './createDataLoader' import { mockPromise, mockedLoader } from '~/tests/utils' import RouterViewMock from '~/tests/data-loaders/RouterViewMock.vue' import ComponentWithNestedLoader from '~/tests/data-loaders/ComponentWithNestedLoader.vue' -import { - dataOneSpy, - dataTwoSpy, - useDataOne, -} from '~/tests/data-loaders/loaders' +import { dataOneSpy, dataTwoSpy } from '~/tests/data-loaders/loaders' import type { RouteLocationNormalizedLoaded } from 'vue-router' describe('defineLoader', () => { diff --git a/src/data-fetching_new/navigation-guard.ts b/src/data-fetching_new/navigation-guard.ts index 5ec2d9cab..1aad6bde3 100644 --- a/src/data-fetching_new/navigation-guard.ts +++ b/src/data-fetching_new/navigation-guard.ts @@ -107,12 +107,15 @@ export function setupLoaderGuard( return } // keep track of loaders that should be committed after all loaders are done - const ret = loader._.load(to, router).then(() => { - // for immediate loaders, the load function handles this - if (commit === 'after-load') { - return loader - } - }) + const ret = app + // allows inject and provide APIs + .runWithContext(() => loader._.load(to, router)) + .then(() => { + // for immediate loaders, the load function handles this + if (commit === 'after-load') { + return loader + } + }) // on client-side, lazy loaders are not awaited, but on server they are return IS_CLIENT && lazy ? undefined