# API del Alcance de Efectos 3.2+

INFO

El alcance de efectos es una API avanzada principalmente destinada a autores de librerías. Para más detalles sobre cómo apalancar esta API, por favor consulte su RFC (opens new window) correspondiente.

# effectScope

Crea un objeto de alcance de efecto que puede capturar los efectos reactivos (p. e.j. computed y observadores) creados dentro de sí para que estos efectos pueden ser eliminados juntos.

Tipar:

function effectScope(detached?: boolean): EffectScope

interface EffectScope {
  run<T>(fn: () => T): T | undefined // undefined si el alcance es inactivo
  stop(): void
}
1
2
3
4
5
6

Ejemplo:

const scope = effectScope()

scope.run(() => {
  const doubled = computed(() => counter.value * 2)

  watch(doubled, () => console.log(doubled.value))

  watchEffect(() => console.log('Cuenta: ', doubled.value))
})

// para eliminar todos efectos en el alcance
scope.stop()
1
2
3
4
5
6
7
8
9
10
11
12

# getCurrentScope

Retorna el alcance de efecto activo actual si hay uno.

Tipar:

function getCurrentScope(): EffectScope | undefined
1

# onScopeDispose

Registra un callback de eliminación en el alcance de efecto activo actual. El callback será invocado cuando el alcance de efecto asociado sea detenido.

Este método puede ser utilizado como una sustitución non-component-coupled de onUnmounted en funciones de composición reutilizables, debido a que la función setup() de cada componente Vue es también invocado en un alcance de efecto.

Tipar:

function onScopeDispose(fn: () => void): void
1