File tree 1 file changed +22
-2
lines changed
1 file changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -208,6 +208,23 @@ export class ReactiveEffect<T = any>
208
208
}
209
209
}
210
210
211
+ /**
212
+ * For debugging
213
+ */
214
+ // function printDeps(sub: Subscriber) {
215
+ // let d = sub.deps
216
+ // let ds = []
217
+ // while (d) {
218
+ // ds.push(d)
219
+ // d = d.nextDep
220
+ // }
221
+ // return ds.map(d => ({
222
+ // id: d.id,
223
+ // prev: d.prevDep?.id,
224
+ // next: d.nextDep?.id,
225
+ // }))
226
+ // }
227
+
211
228
let batchDepth = 0
212
229
let batchedEffect : ReactiveEffect | undefined
213
230
@@ -265,9 +282,11 @@ function cleanupDeps(sub: Subscriber) {
265
282
// Cleanup unsued deps
266
283
let head
267
284
let tail = sub . depsTail
268
- for ( let link = tail ; link ; link = link . prevDep ) {
285
+ let link = tail
286
+ while ( link ) {
287
+ const prev = link . prevDep
269
288
if ( link . version === - 1 ) {
270
- if ( link === tail ) tail = link . prevDep
289
+ if ( link === tail ) tail = prev
271
290
// unused - remove it from the dep's subscribing effect list
272
291
removeSub ( link )
273
292
// also remove it from this effect's dep list
@@ -281,6 +300,7 @@ function cleanupDeps(sub: Subscriber) {
281
300
// restore previous active link if any
282
301
link . dep . activeLink = link . prevActiveLink
283
302
link . prevActiveLink = undefined
303
+ link = prev
284
304
}
285
305
// set the new head & tail
286
306
sub . deps = head
You can’t perform that action at this time.
0 commit comments