vue3中uni-app不支持过滤器,因vue官方已移除filters选项;应使用computed属性或纯函数替代,如日期格式化用computed封装或导入dayjs函数直接调用。

uni-app 里 Vue3 Composition API 没有过滤器(filter)这个概念
Vue3 官方已移除 filters 选项,uni-app 基于 Vue3 时同样不支持在 setup() 中声明或使用传统过滤器。你写 filters: { ... } 或试图在模板中用 {{ value | myFilter }},运行时会报错或静默失效——这不是 uni-app 的 bug,是 Vue3 的设计取舍。
用 computed 或函数调用替代模板中的过滤逻辑
最直接、最可控的方式,是在 setup() 中定义普通函数或 computed,然后在模板中调用。注意:模板中不能直接调用带参数的函数(会每次渲染都执行),所以优先用 computed 包一层,或封装为可复用的组合式函数。
- 简单格式化(如日期、价格):用
computed,依赖响应式数据变化自动更新 - 需要传参的场景(如动态前缀、多语言 key):在
setup()中定义普通函数,模板中调用(仅限非高频更新字段,否则影响性能) - 多个页面共用:抽成独立的
useXXXFilter()组合函数,返回处理函数
示例(价格格式化):
import { computed, ref } from 'vue'
export default {
setup() {
const price = ref(199.5)
// ✅ 推荐:用 computed,响应式且高效
const formattedPrice = computed(() => `¥${price.value.toFixed(2)}`)
// ⚠️ 可用但需谨慎:函数调用(适合低频或无依赖场景)
const addUnit = (val, unit = 'px') => `${val}${unit}`
return {
formattedPrice,
addUnit
}
}
}
模板中写法:

