diff --git a/packages/virtual-core/src/utils.ts b/packages/virtual-core/src/utils.ts index c11b3d38..4d824b8d 100644 --- a/packages/virtual-core/src/utils.ts +++ b/packages/virtual-core/src/utils.ts @@ -10,10 +10,12 @@ export function memo, TResult>( debug?: () => boolean onChange?: (result: TResult) => void initialDeps?: TDeps + skipInitialOnChange?: boolean }, ) { let deps = opts.initialDeps ?? [] let result: TResult | undefined + let isInitial = true function memoizedFunction(): TResult { let depTime: number @@ -62,7 +64,11 @@ export function memo, TResult>( ) } - opts?.onChange?.(result) + if (opts?.onChange && !(isInitial && opts.skipInitialOnChange)) { + opts.onChange(result) + } + + isInitial = false return result }