# API do Escopo de Efeito 3.2+

INFO

Escopo de efeito é uma API avançada destinada principalmente a autores de bibliotecas. Para obter detalhes sobre como aproveitar essa API, consulte o RFC (opens new window) correspondente.

# effectScope

Cria um objeto de escopo de efeito que pode capturar os efeitos reativos (por exemplo, computados e observadores) criados dentro dele para que esses efeitos possam ser descartados juntos.

Tipando:

function effectScope(detached?: boolean): EffectScope

interface EffectScope {
  run<T>(fn: () => T): T | undefined // indefinido se o escopo estiver inativo
  stop(): void
}
1
2
3
4
5
6

Exemplo:

const scope = effectScope()

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

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

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

// para descartar todos os efeitos no escopo
scope.stop()
1
2
3
4
5
6
7
8
9
10
11
12

# getCurrentScope

Retorna o escopo de efeito atualmente ativo se houver um.

Tipando:

function getCurrentScope(): EffectScope | undefined
1

# onScopeDispose

Registra um callback de descarte no escopo de efeito atualmente ativo. O callback será invocado quando o escopo de efeito associado for interrompido.

Este método pode ser usado como um substituto de onUnmounted "não acoplado a componentes" em funções de composição reutilizáveis, uma vez que a função setup() de cada componente Vue também é invocada em um escopo de efeito.

Tipando:

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