Skip to content

Commit 7936dae

Browse files
authored
perf(reactivity): cache tracking value (#11145)
1 parent 8c4d7f5 commit 7936dae

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

packages/reactivity/src/effect.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -308,14 +308,19 @@ export function triggerEffects(
308308
) {
309309
pauseScheduling()
310310
for (const effect of dep.keys()) {
311+
// dep.get(effect) is very expensive, we need to calculate it lazily and reuse the result
312+
let tracking: boolean | undefined
313+
311314
if (!dep.computed && effect.computed) {
312-
if (dep.get(effect) === effect._trackId && effect._runnings > 0) {
315+
if (
316+
effect._runnings > 0 &&
317+
(tracking ??= dep.get(effect) === effect._trackId)
318+
) {
313319
effect._dirtyLevel = DirtyLevels.MaybeDirty_ComputedSideEffect_Origin
314320
continue
315321
}
316322
}
317-
// dep.get(effect) is very expensive, we need to calculate it lazily and reuse the result
318-
let tracking: boolean | undefined
323+
319324
if (
320325
effect._dirtyLevel < dirtyLevel &&
321326
(tracking ??= dep.get(effect) === effect._trackId)

0 commit comments

Comments
 (0)