Vue 3.0 过滤器 实例分析
vue 2022-05-07 17:08:25小码哥的IT人生shichen
#概览
从 Vue 3.0 开始,过滤器已删除,不再支持。
#2.x 语法
在 2.x,开发者可以使用过滤器来处理通用文本格式。
例如:
<template>
<h1>Bank Account Balance</h1>
<p>{{ accountBalance | currencyUSD }}</p>
</template>
<script>
export default {
props: {
accountBalance: {
type: Number,
required: true
}
},
filters: {
currencyUSD(value) {
return '$' + value
}
}
}
</script>
虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是“只是 JavaScript”的假设,这不仅有学习成本,而且有实现成本。
#3.x 更新
在 3.x 中,过滤器已删除,不再支持。相反地,我们建议用方法调用或计算属性替换它们。
使用上面的例子,这里是一个如何实现它的例子。
<template>
<h1>Bank Account Balance</h1>
<p>{{ accountInUSD }}</p>
</template>
<script>
export default {
props: {
accountBalance: {
type: Number,
required: true
}
},
computed: {
accountInUSD() {
return '$' + this.accountBalance
}
}
}
</script>
#迁移策略
我们建议用计算属性或方法代替过滤器,而不是使用过滤器。
#全局过滤器
如果在应用中全局注册了过滤器,那么在每个组件中用计算属性或方法调用来替换它可能就没那么方便了。
相反地,你可以通过全局属性在所有组件中使用它:
// main.js
const app = createApp(App)
app.config.globalProperties.$filters = {
currencyUSD(value) {
return '$' + value
}
}
然后,你可以通过 $filters
对象修改所有的模板,像下面这样:
<template>
<h1>Bank Account Balance</h1>
<p>{{ $filters.currencyUSD(accountBalance) }}</p>
</template>
注意,这种方式只能用于方法中,不可以在计算属性中使用,因为后者只有在单个组件的上下文中定义时才有意义。
相关阅读
- PHP FILTER_VALIDATE_IP 过滤器 详解
- PHP FILTER_VALIDATE_EMAIL 过滤器 详解
- PHP FILTER_VALIDATE_URL 过滤器 详解
- PHP FILTER_VALIDATE_REGEXP 过滤器 详解
- PHP FILTER_VALIDATE_FLOAT 过滤器 详解
- PHP FILTER_VALIDATE_BOOLEAN 过滤器 详解
- PHP FILTER_VALIDATE_INT 过滤器 详解
- PHP FILTER_UNSAFE_RAW 过滤器 详解
- PHP FILTER_SANITIZE_MAGIC_QUOTES 过滤器 详解
- PHP FILTER_SANITIZE_NUMBER_FLOAT 过滤器 详解