# Effect 作用域 API
# effectScope
创建一个 effect 作用域对象,捕获在其内部创建的响应性副作用(例如计算属性或监听器),可以对这些副作用进行批量处理
类型声明:
function effectScope(detached?: boolean): EffectScope
interface EffectScope {
run<T>(fn: () => T): T | undefined
stop(): void
pause(): void
resume(): void
}
示例:
import { effectScope } from '@mpxjs/core'
const scope = effectScope()
scope.run(() => {
const doubled = computed(() => counter.value * 2)
watch(doubled, () => console.log(doubled.value))
watchEffect(() => console.log('Count: ', doubled.value))
})
scope.stop()
- 暂停侦听
Mpx 提供了 pause 方法可以将整个作用域中的响应性副作用批量暂停侦听。
import { effectScope, onHide } from '@mpxjs/core'
const scope = effectScope()
scope.run(() => {
const doubled = computed(() => counter.value * 2)
watch(doubled, () => console.log(doubled.value))
watchEffect(() => console.log('Count: ', doubled.value))
})
onHide(() => {
scope.pause()
})
- 恢复侦听
被暂停的作用域可以使用 resume 方法来恢复侦听。
import {onShow} from '@mpxjs/core'
// ......
onShow(() => {
scope.resume()
})
# getCurrentScope
返回当前活跃的 effect 作用域。
类型声明:
function getCurrentScope(): EffectScope | undefined
# onScopeDispose
在当前活跃的 effect 作用域上注册一个处理回调。该回调会在相关的 effect 作用域结束之后被调用。
类型声明:
function onScopeDispose(fn: () => void): void