Vue 3.0 过滤器

#概览

从 Vue 3.0 开始,过滤器已删除,不再支持。

#2.x 语法

在 2.x,开发者可以使用过滤器来处理通用文本格式。

例如:

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

虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是“只是 JavaScript”的假设,这不仅有学习成本,而且有实现成本。

#3.x 更新

在 3.x 中,过滤器已删除,不再支持。相反地,我们建议用方法调用或计算属性替换它们。

使用上面的例子,这里是一个如何实现它的例子。

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

#迁移策略

我们建议用计算属性或方法代替过滤器,而不是使用过滤器。

#全局过滤器

如果在应用中全局注册了过滤器,那么在每个组件中用计算属性或方法调用来替换它可能就没那么方便了。

相反地,你可以通过全局属性在所有组件中使用它:

 
  1. // main.js
  2. const app = createApp(App)
  3. app.config.globalProperties.$filters = {
  4. currencyUSD(value) {
  5. return '$' + value
  6. }
  7. }

然后,你可以通过 $filters 对象修改所有的模板,像下面这样:

 
  1. <template>
  2. <h1>Bank Account Balance</h1>
  3. <p>{{ $filters.currencyUSD(accountBalance) }}</p>
  4. </template>

注意,这种方式只能用于方法中,不可以在计算属性中使用,因为后者只有在单个组件的上下文中定义时才有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值