@@ -6,9 +6,11 @@ import {
66 type Link ,
77 ReactiveFlags ,
88 type ReactiveNode ,
9+ activeSub ,
910 checkDirty ,
1011 endTracking ,
1112 link ,
13+ setActiveSub ,
1214 startTracking ,
1315 unlink ,
1416} from './system'
@@ -113,10 +115,7 @@ export class ReactiveEffect<T = any>
113115 return this . fn ( )
114116 }
115117 cleanup ( this )
116- const prevSub = activeSub
117- setActiveSub ( this )
118- startTracking ( this )
119-
118+ const prevSub = startTracking ( this )
120119 try {
121120 return this . fn ( )
122121 } finally {
@@ -126,8 +125,7 @@ export class ReactiveEffect<T = any>
126125 'this is likely a Vue internal bug.' ,
127126 )
128127 }
129- setActiveSub ( prevSub )
130- endTracking ( this )
128+ endTracking ( this , prevSub )
131129 const flags = this . flags
132130 if (
133131 ( flags & ( ReactiveFlags . Recursed | EffectFlags . ALLOW_RECURSE ) ) ===
@@ -234,7 +232,7 @@ const resetTrackingStack: (ReactiveNode | undefined)[] = []
234232 */
235233export function pauseTracking ( ) : void {
236234 resetTrackingStack . push ( activeSub )
237- activeSub = undefined
235+ setActiveSub ( undefined )
238236}
239237
240238/**
@@ -252,7 +250,7 @@ export function enableTracking(): void {
252250 resetTrackingStack . push ( undefined )
253251 for ( let i = resetTrackingStack . length - 1 ; i >= 0 ; i -- ) {
254252 if ( resetTrackingStack [ i ] !== undefined ) {
255- activeSub = resetTrackingStack [ i ]
253+ setActiveSub ( resetTrackingStack [ i ] )
256254 break
257255 }
258256 }
@@ -270,9 +268,9 @@ export function resetTracking(): void {
270268 )
271269 }
272270 if ( resetTrackingStack . length ) {
273- activeSub = resetTrackingStack . pop ( ) !
271+ setActiveSub ( resetTrackingStack . pop ( ) ! )
274272 } else {
275- activeSub = undefined
273+ setActiveSub ( undefined )
276274 }
277275}
278276
@@ -313,17 +311,10 @@ export function onEffectCleanup(fn: () => void, failSilently = false): void {
313311
314312function cleanupEffect ( fn : ( ) => void ) {
315313 // run cleanup without active effect
316- const prevSub = activeSub
317- activeSub = undefined
314+ const prevSub = setActiveSub ( undefined )
318315 try {
319316 fn ( )
320317 } finally {
321- activeSub = prevSub
318+ setActiveSub ( prevSub )
322319 }
323320}
324-
325- export let activeSub : ReactiveNode | undefined = undefined
326-
327- export function setActiveSub ( sub : ReactiveNode | undefined ) : void {
328- activeSub = sub
329- }
0 commit comments