Skip to content

Commit a893681

Browse files
committed
refactor(reactivity): execute effect stop in unlink
1 parent f0dcbc5 commit a893681

File tree

2 files changed

+5
-15
lines changed

2 files changed

+5
-15
lines changed

packages/reactivity/src/effectScope.ts

+2-14
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class EffectScope implements Subscriber, Dependency {
5050
this.flags |= EffectFlags.PAUSED
5151
for (let link = this.deps; link !== undefined; link = link.nextDep) {
5252
const dep = link.dep
53-
if ('notify' in dep) {
53+
if ('pause' in dep) {
5454
dep.pause()
5555
}
5656
}
@@ -66,7 +66,7 @@ export class EffectScope implements Subscriber, Dependency {
6666
this.flags = flags & ~EffectFlags.PAUSED
6767
for (let link = this.deps; link !== undefined; link = link.nextDep) {
6868
const dep = link.dep
69-
if ('notify' in dep) {
69+
if ('resume' in dep) {
7070
dep.resume()
7171
}
7272
}
@@ -113,26 +113,14 @@ export class EffectScope implements Subscriber, Dependency {
113113
stop(): void {
114114
if (this.active) {
115115
this.flags |= EffectFlags.STOP
116-
117-
let link = this.deps
118-
while (link !== undefined) {
119-
const next = link.nextDep
120-
const dep = link.dep
121-
if ('notify' in dep) {
122-
dep.stop()
123-
}
124-
link = next
125-
}
126116
while (this.deps !== undefined) {
127117
unlink(this.deps)
128118
}
129-
130119
const l = this.cleanupsLength
131120
for (let i = 0; i < l; i++) {
132121
this.cleanups[i]()
133122
}
134123
this.cleanupsLength = 0
135-
136124
if (this.subs !== undefined) {
137125
unlink(this.subs)
138126
}

packages/reactivity/src/system.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,9 @@ export function unlink(link: Link): void {
127127
}
128128
if (dep.subs === undefined && 'deps' in dep) {
129129
const depFlags = dep.flags
130-
if (!(depFlags & SubscriberFlags.Dirty)) {
130+
if ('stop' in dep) {
131+
dep.stop()
132+
} else if (!(depFlags & SubscriberFlags.Dirty)) {
131133
dep.flags = depFlags | SubscriberFlags.Dirty
132134
}
133135
while (dep.deps !== undefined) {

0 commit comments

Comments
 (0)