Skip to content

Commit 0e0c44e

Browse files
johnsoncodehkyyx990803
authored andcommitted
perf: avoid duplicate trigger effect to deps
1 parent 399f155 commit 0e0c44e

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

packages/reactivity/src/computed.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,25 @@ export class ComputedRefImpl<T> {
3636
public _computedsToAskDirty: ComputedRefImpl<any>[] = []
3737
public _cacheable: boolean
3838

39+
private _triggeredAfterLastEffect = false
40+
3941
constructor(
4042
getter: ComputedGetter<T>,
4143
private readonly _setter: ComputedSetter<T>,
4244
isReadonly: boolean,
4345
isSSR: boolean
4446
) {
45-
this.effect = new ReactiveEffect(getter, (_c) => {
47+
this.effect = new ReactiveEffect(getter, _c => {
4648
if (!this._dirty) {
4749
if (_c) {
4850
this._computedsToAskDirty.push(_c)
49-
}
50-
else {
51+
} else {
5152
this._dirty = true
5253
}
53-
triggerRefValue(this, this)
54+
if (!this._triggeredAfterLastEffect) {
55+
this._triggeredAfterLastEffect = true
56+
triggerRefValue(this, this)
57+
}
5458
}
5559
})
5660
this.effect.computed = this
@@ -77,6 +81,7 @@ export class ComputedRefImpl<T> {
7781
}
7882
self._value = newValue
7983
self._dirty = false
84+
self._triggeredAfterLastEffect = false
8085
}
8186
self._computedsToAskDirty.length = 0
8287
return self._value

0 commit comments

Comments
 (0)