因此,不确定这是否是正确的解决方法,但是我正在尝试创建一个吸气剂,该吸气剂将基于通过函数传递给它的2种颜色返回渐变。到目前为止,我有:

函数被调用

<v-card-text
        style="height: 120px"
        :style="{
            'background-image': backgroundImage(card.color1, card.color2),
        }"
        flat
    ></v-card-text>


计算:

backgroundImage() {
            return this.backgroundImage(color1, color2)
        },



吸气剂:

getters: {
        backgroundImage: () => (color1, color2) =>{
            let bgImage =
                'linear-gradient(to top right, ' + color1 + ',' + color2 + ')';
            return bgImage;
        }

    }



但是当我现在运行它时,出现此错误

Error in render: "RangeError: Maximum call stack size exceeded"


不确定我做错了什么,或者这是否是在Vuex中处理此类功能的正确方法?

最佳答案

调用堆栈错误是由以下计算的调用本身的递归引起的:

backgroundImage() {
  return this.backgroundImage(color1, color2) // <-- calling itself recursively
}


尝试以下方法:

backgroundImage() {
  return this.$store.getters.backgroundImage;
}


现在,计算出来的将调用吸气剂而不是自身。请注意,它返回的是不执行getter的方法,因为您在模板中调用它时已经这样做了。

这是一个demo

09-19 04:07