# Filtros
removed

# Visão Geral

Filtros foram removidos do Vue 3.0 e não são mais suportados.

# Sintaxe v2.x

Na v2.x, desenvolvedores poderiam utilizar filters para aplicar formatações comuns em texto.

Por exemplo:

<template>
  <h1>Saldo da Conta Bancária</h1>
  <p>{{ accountBalance | currencyUSD }}</p>
</template>

<script>
  export default {
    props: {
      accountBalance: {
        type: Number,
        required: true
      }
    },
    filters: {
      currencyUSD(value) {
        return '$' + value
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Embora isso pareça ser uma conveniência, requer uma sintaxe personalizada que quebra a suposição de que as expressões entre chaves sejam "apenas JavaScript", o que tem custos de aprendizado e implementação.

# Atualização v3.x

Na v3.x, filters foram removidos e não mais suportados. Ao invés disso, recomendamos utilizar chamadas à metodos ou propriedades computadas.

Utilizando o exemplo acima, aqui está um exemplo de como isso pode ser implementado.

<template>
  <h1>Saldo da Conta Bancária</h1>
  <p>{{ accountInUSD }}</p>
</template>

<script>
  export default {
    props: {
      accountBalance: {
        type: Number,
        required: true
      }
    },
    computed: {
      accountInUSD() {
        return '$' + this.accountBalance
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# Estratégia de Migração

Ao invés de utilizar filtros, recomendamos substituí-los por propriedades computadas ou métodos.

Sinalizadores na compilação de migração:

  • FILTERS
  • COMPILER_FILTERS

# Filtros Globais

Se você estiver usando filtros que foram registrados globalmente e usados em todo o seu aplicativo, provavelmente não é conveniente substituí-los por propriedades computadas ou métodos em cada componente individual.

Em vez disso, você pode disponibilizar seus filtros globais para todos os componentes por meio de propriedades globais:

// main.js
const app = createApp(App)

app.config.globalProperties.$filters = {
  currencyUSD(value) {
    return '$' + value
  }
}
1
2
3
4
5
6
7
8

Então você pode corrigir todos os templates usando este objeto $filters assim:

<template>
  <h1>Saldo da Conta Bancária</h1>
  <p>{{ $filters.currencyUSD(accountBalance) }}</p>
</template>
1
2
3
4

Observe que, com essa abordagem, você só pode usar métodos, não propriedades computadas, quais só fazem sentido quando definidas no contexto de um componente individual.