From: Johnson Chu Date: Tue, 31 Oct 2023 14:19:40 +0000 (+0800) Subject: feat(reactivity): expose last result for computed getter (#9497) X-Git-Tag: v3.4.0-alpha.2~77 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48b47a1ab63577e2dbd91947eea544e3ef185b85;p=thirdparty%2Fvuejs%2Fcore.git feat(reactivity): expose last result for computed getter (#9497) --- diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index 09247360d0..c48e2f0df2 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -16,8 +16,8 @@ export interface WritableComputedRef extends Ref { readonly effect: ReactiveEffect } -export type ComputedGetter = (...args: any[]) => T -export type ComputedSetter = (v: T) => void +export type ComputedGetter = (oldValue?: T) => T +export type ComputedSetter = (newValue: T) => void export interface WritableComputedOptions { get: ComputedGetter @@ -41,9 +41,10 @@ export class ComputedRefImpl { isReadonly: boolean, isSSR: boolean ) { - this.effect = new ReactiveEffect(getter, () => { - triggerRefValue(this, DirtyLevels.ComputedValueMaybeDirty) - }) + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue(this, DirtyLevels.ComputedValueMaybeDirty) + ) this.effect.computed = this this.effect.active = this._cacheable = !isSSR this[ReactiveFlags.IS_READONLY] = isReadonly