(fn: () => void | (() => void))
| 163 | } |
| 164 | |
| 165 | export function effect(fn: () => void | (() => void)): () => void { |
| 166 | const e: EffectNode = { |
| 167 | fn, |
| 168 | cleanup: undefined, |
| 169 | subs: undefined, |
| 170 | subsTail: undefined, |
| 171 | deps: undefined, |
| 172 | depsTail: undefined, |
| 173 | flags: ReactiveFlags.Watching | ReactiveFlags.RecursedCheck, |
| 174 | }; |
| 175 | const prevSub = setActiveSub(e); |
| 176 | if (prevSub !== undefined) { |
| 177 | link(e, prevSub, 0); |
| 178 | prevSub.flags |= HasChildEffect; |
| 179 | } |
| 180 | try { |
| 181 | ++runDepth; |
| 182 | e.cleanup = e.fn(); |
| 183 | } finally { |
| 184 | --runDepth; |
| 185 | activeSub = prevSub; |
| 186 | e.flags &= ~ReactiveFlags.RecursedCheck; |
| 187 | } |
| 188 | return effectOper.bind(e); |
| 189 | } |
| 190 | |
| 191 | export function effectScope(fn: () => void): () => void { |
| 192 | const e: EffectScopeNode = { |
searching dependent graphs…