vue,computed的问题

vue中的computed可以接收参数计算吗?

vuejs
74 views
Comments
登录后评论
Sign In
·

怎么做到的

·

(GPT-4)在 Vue.js 中,computed 属性是不接受参数的。computed 属性是基于它们的响应式依赖进行缓存的。一个 computed 属性的值只有在它的相关依赖发生改变时才会重新计算。

如果你需要进行参数化计算,一种可行的方式是在 computed 属性中返回一个函数,然后在你的模板或者方法中调用这个函数并传入参数。

例如:

javascript

Copy

computed: {
  parametricComputation() {
    return (param1, param2) => {
      // Perform computation with param1 and param2
    }
  }
}

然后在模板中:

html

Copy

<div>{{ parametricComputation(arg1, arg2) }}</div>

或者在方法中:

javascript

Copy

methods: {
  someMethod() {
    var result = this.parametricComputation(arg1, arg2);
    // Do something with result
  }
}

但请注意,这种方式并不会缓存结果。每次调用这个函数,都会重新进行计算。如果你需要缓存结果,可能需要自己实现一种方式,或者考虑使用其他库(例如 lodash 的 _.memoize 方法)。

另外,methods 和 watch 也是常用的处理参数化计算的方法,但同样,这两种方法也不会缓存结果。

·

所以你希望运行时动态改变某个值,然后将这个值传递给computed对象,让这个值影响computed的结果是么???

如果是的话,你要转换思维,按照数据驱动的方式去思考这个问题。

然后,vue会在当前组件的上下文绑定对应的可响应对象,vue编译的时候会自动对其方法内部的可响应对象做监听,从而改变computed的值。

具体做法就是,将一个值定义为可响应的变量A,也就是你所说的参数,然后computed对象B在函数内部进行计算时,让变量A参与计算,运行时你改变A的值,vue会自动触发B的重计算。