Effect scope is an advanced API primarily intended for library authors. For details on how to leverage this API, please consult its corresponding RFC (opens new window).
effectScope
Creates an effect scope object which can capture the reactive effects (e.g. computed and watchers) created within it so that these effects can be disposed together.
Typing:
function effectScope(detached?: boolean): EffectScope
interface EffectScope {
run<T>(fn: () => T): T | undefined // undefined if scope is inactive
stop(): void
} Example:
const scope = effectScope()
scope.run(() => {
const doubled = computed(() => counter.value * 2)
watch(doubled, () => console.log(doubled.value))
watchEffect(() => console.log('Count: ', doubled.value))
})
// to dispose all effects in the scope
scope.stop() getCurrentScope
Returns the current active effect scope if there is one.
Typing:
function getCurrentScope(): EffectScope | undefined
onScopeDispose
Registers a dispose callback on the current active effect scope. The callback will be invoked when the associated effect scope is stopped.
This method can be used as a non-component-coupled replacement of onUnmounted in reusable composition functions, since each Vue component's setup() function is also invoked in an effect scope.
Typing:
function onScopeDispose(fn: () => void): void
© 2013–present Yuxi Evan You
Licensed under the MIT License.
https://v3.vuejs.org/api/effect-scope.html