vue3.0实现过滤器
Vue 3.0 实现过滤器的方法
Vue 3.0 移除了内置的过滤器功能,但可以通过其他方式实现类似效果。以下是几种常见方法:
全局方法实现
在 Vue 3.0 中,可以通过全局方法或计算属性实现过滤器功能。例如,定义一个全局方法:
app.config.globalProperties.$filters = {
capitalize(value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
在模板中使用:
<p>{{ $filters.capitalize(message) }}</p>
计算属性实现
另一种方式是使用计算属性:

const app = Vue.createApp({
data() {
return {
message: 'hello'
}
},
computed: {
capitalizedMessage() {
return this.message.charAt(0).toUpperCase() + this.message.slice(1)
}
}
})
在模板中直接使用计算属性:
<p>{{ capitalizedMessage }}</p>
组合式 API 实现
使用组合式 API 时,可以通过函数实现过滤器功能:
import { ref, computed } from 'vue'
export default {
setup() {
const message = ref('hello')
const capitalizedMessage = computed(() => {
return message.value.charAt(0).toUpperCase() + message.value.slice(1)
})
return { message, capitalizedMessage }
}
}
自定义指令实现

还可以通过自定义指令实现类似过滤器的功能:
app.directive('uppercase', {
mounted(el, binding) {
el.textContent = binding.value.toUpperCase()
},
updated(el, binding) {
el.textContent = binding.value.toUpperCase()
}
})
在模板中使用:
<p v-uppercase="message"></p>
第三方库
如果需要更强大的过滤器功能,可以考虑使用第三方库如 vue-filter 或 vue-currency-filter。
这些方法都能在 Vue 3.0 中实现类似 Vue 2.x 过滤器的功能,选择哪种方式取决于具体需求和使用场景。


