diff --git a/packages/nuxt/src/app/composables/asyncData.ts b/packages/nuxt/src/app/composables/asyncData.ts index d4ac4e49ec3d..b7c401aaa3d6 100644 --- a/packages/nuxt/src/app/composables/asyncData.ts +++ b/packages/nuxt/src/app/composables/asyncData.ts @@ -135,7 +135,7 @@ export function useAsyncData< (nuxt._asyncDataPromises[key] as any).cancelled = true } // Avoid fetching same key that is already fetched - if (opts._initial && hasCachedData()) { + if ((opts._initial || (nuxt.isHydrating && opts._initial !== false)) && hasCachedData()) { return getCachedData() } asyncData.pending.value = true diff --git a/test/fixtures/basic/pages/useAsyncData/override.vue b/test/fixtures/basic/pages/useAsyncData/override.vue index 3d0328c43ec6..891f0339c8c5 100644 --- a/test/fixtures/basic/pages/useAsyncData/override.vue +++ b/test/fixtures/basic/pages/useAsyncData/override.vue @@ -15,14 +15,14 @@ if (count || data.value !== 1) { } timeout = 100 -const p = refresh({ dedupe: true }) +const p = refresh({ dedupe: true, _initial: false }) if (process.client && (count !== 0 || data.value !== 1)) { throw new Error('count should start at 0') } timeout = 0 -await refresh() +await refresh({ _initial: false }) if (process.client && (count !== 1 || data.value !== 1)) { throw new Error('override should execute')