From a74d33bce4ebb4d7cf1f8b333695e6f396ed1316 Mon Sep 17 00:00:00 2001 From: Johnson Chu <johnsoncodehk@gmail.com> Date: Sat, 28 Oct 2023 22:19:08 +0800 Subject: [PATCH] feat(reactivity): expose last result for computed getter --- packages/reactivity/src/computed.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index 09247360d06..c48e2f0df2c 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -16,8 +16,8 @@ export interface WritableComputedRef<T> extends Ref<T> { readonly effect: ReactiveEffect<T> } -export type ComputedGetter<T> = (...args: any[]) => T -export type ComputedSetter<T> = (v: T) => void +export type ComputedGetter<T> = (oldValue?: T) => T +export type ComputedSetter<T> = (newValue: T) => void export interface WritableComputedOptions<T> { get: ComputedGetter<T> @@ -41,9 +41,10 @@ export class ComputedRefImpl<T> { 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