uni-app Vue3 Composition API怎么写过滤器函数

浅磊酱_8776

浅磊酱_8776

2026-10-19

148人浏览

原创

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

uni-app vue3 composition api怎么写过滤器函数

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
    }
  }
}

模板中写法:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.1万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习