From 40966ad56c0c7d356677ef87ae5278d3331a9e25 Mon Sep 17 00:00:00 2001 From: wattanx Date: Thu, 22 Jan 2026 22:54:32 +0900 Subject: [PATCH] fix!: change default values of `data` and `error` from null to undefined --- .../src/runtime/composables/asyncData.ts | 46 +++++++++---------- packages/bridge/test/use-async-data.test.ts | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/bridge/src/runtime/composables/asyncData.ts b/packages/bridge/src/runtime/composables/asyncData.ts index aa7916f24..96411ef55 100644 --- a/packages/bridge/src/runtime/composables/asyncData.ts +++ b/packages/bridge/src/runtime/composables/asyncData.ts @@ -20,7 +20,7 @@ export interface AsyncDataOptions< ResT, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = undefined, > { /** * Whether to fetch on the server side. @@ -93,7 +93,7 @@ export interface _AsyncData { refresh: (opts?: AsyncDataExecuteOptions) => Promise execute: (opts?: AsyncDataExecuteOptions) => Promise clear: () => void - error: Ref + error: Ref status: Ref } @@ -107,11 +107,11 @@ export function useAsyncData< NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = undefined, > ( handler: (ctx?: NuxtAppCompat) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useAsyncData< ResT, NuxtErrorDataT = unknown, @@ -121,18 +121,18 @@ export function useAsyncData< > ( handler: (ctx?: NuxtAppCompat) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useAsyncData< ResT, NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = undefined, > ( key: string, handler: (ctx?: NuxtAppCompat) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useAsyncData< ResT, NuxtErrorDataT = unknown, @@ -143,14 +143,14 @@ export function useAsyncData< key: string, handler: (ctx?: NuxtAppCompat) => Promise, options?: AsyncDataOptions -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useAsyncData< ResT, NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, -> (...args: any[]): AsyncData, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> { + DefaultT = undefined, +> (...args: any[]): AsyncData, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> { const autoKey = typeof args[args.length - 1] === 'string' ? args.pop() : undefined if (typeof args[0] !== 'string') { args.unshift(autoKey) } @@ -169,7 +169,7 @@ export function useAsyncData< const nuxt = useNuxtApp() // Used to get default values - const getDefault = () => null + const getDefault = () => undefined const getDefaultCachedData = () => nuxt.isHydrating ? nuxt.payload.data[key] : nuxt.static.data[key] // Apply defaults @@ -190,7 +190,7 @@ export function useAsyncData< // Create or use a shared asyncData entity if (!nuxt._asyncData[key] || !options.immediate) { - nuxt.payload._errors[key] = nuxt.payload._errors[key] ?? null + nuxt.payload._errors[key] = nuxt.payload._errors[key] ?? undefined const _ref = options.deep ? ref : shallowRef @@ -243,7 +243,7 @@ export function useAsyncData< nuxt.payload.data[key] = result asyncData.data.value = result - asyncData.error.value = null + asyncData.error.value = undefined asyncData.status.value = 'success' }) .catch((error: any) => { @@ -337,11 +337,11 @@ export function useLazyAsyncData< NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = undefined, > ( handler: (ctx?: NuxtAppCompat) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useLazyAsyncData< ResT, NuxtErrorDataT = unknown, @@ -351,18 +351,18 @@ export function useLazyAsyncData< > ( handler: (ctx?: NuxtAppCompat) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useLazyAsyncData< ResT, NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, + DefaultT = undefined, > ( key: string, handler: (ctx?: NuxtAppCompat) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useLazyAsyncData< ResT, NuxtErrorDataT = unknown, @@ -373,15 +373,15 @@ export function useLazyAsyncData< key: string, handler: (ctx?: NuxtAppCompat) => Promise, options?: Omit, 'lazy'> -): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> +): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> export function useLazyAsyncData< ResT, NuxtErrorDataT = unknown, DataT = ResT, PickKeys extends KeysOf = KeysOf, - DefaultT = null, -> (...args: any[]): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | null> { + DefaultT = undefined, +> (...args: any[]): AsyncData | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError) | undefined> { const autoKey = typeof args[args.length - 1] === 'string' ? args.pop() : undefined if (typeof args[0] !== 'string') { args.unshift(autoKey) } const [key, handler, options] = args as [string, (ctx?: NuxtAppCompat) => Promise, AsyncDataOptions] @@ -417,12 +417,12 @@ function clearNuxtDataByKey (nuxtApp: NuxtAppCompat, key: string): void { } if (key in nuxtApp.payload._errors) { - nuxtApp.payload._errors[key] = null + nuxtApp.payload._errors[key] = undefined } if (nuxtApp._asyncData[key]) { nuxtApp._asyncData[key]!.data.value = undefined - nuxtApp._asyncData[key]!.error.value = null + nuxtApp._asyncData[key]!.error.value = undefined nuxtApp._asyncData[key]!.pending.value = false nuxtApp._asyncData[key]!.status.value = 'idle' } diff --git a/packages/bridge/test/use-async-data.test.ts b/packages/bridge/test/use-async-data.test.ts index 96231dde4..692e3fbe3 100644 --- a/packages/bridge/test/use-async-data.test.ts +++ b/packages/bridge/test/use-async-data.test.ts @@ -134,7 +134,7 @@ describe('useLazyAsyncData', () => { ) expect(handler).not.toHaveBeenCalled() - expect(asyncData.data.value).toBe(null) + expect(asyncData.data.value).toBe(undefined) expect(asyncData.pending.value).toBe(true) await asyncData.execute()