You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue步进器组件报错:_vm.stepProgression不是函数问题咨询

问题原因及解决方案

报错原因

Vue的计算属性本质是属性,不是方法,它无法直接接收参数。你在模板里把stepProgression当成函数传参调用,自然会触发“不是函数”的类型错误。

两种解决办法

办法1:改用方法(最直接)

把stepProgression从计算属性移到methods选项里,方法支持接收参数,调用方式不变:

模板代码:

<li
    v-for="(step, index) in stepper"
    :key="step.id"
    :class="stepProgression(index)"
>
    {{ step.stage }}
</li>

脚本代码:

methods: {
    stepProgression(index) {
        return {
            'is--selected': index === this.activeSlide,
            'is--visited': this.activeSlide > index
        }
    }
}

办法2:让计算属性返回函数(适合需要缓存场景)

如果后续逻辑需要依赖计算属性的缓存特性,可让计算属性返回一个能接收参数的函数:

脚本代码:

computed: {
    stepProgression() {
        // 返回一个接收index的函数
        return (index) => {
            return {
                'is--selected': index === this.activeSlide,
                'is--visited': this.activeSlide > index
            }
        }
    }
}

模板调用方式和你当前的写法一致即可。

内容的提问来源于stack exchange,提问作者Gazillacode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:25:15