Vue3 入门指北(四)computed (计算属性)
前言
当我们需要通过复杂的逻辑处理来得到我们想要的数据时,如果通过在模板中运用表达式计算的话,虽然很方便。但如果写太多的话,往往会使的整个模板变得臃肿,难以维护。而对于这种情况,vue3 提供了 computed api 帮助我们解决这种问题。下面就让我们来看一看。
computed
比如我们有如下一些信息:
复制代码
我们需要根据班级的人数判断为大班小班:
复制代码
我们可以看出如上代码的结果依赖于students
属性,并且如果有多出地方用到的时候,这样的代码就会写好几遍。
对于这样的情况,vue 推荐使用 computed api 来解决:
复制代码
这里通过computed
返回了一个 计算属性 ref。可以通过.value
的形式计算访问,在模板中可以直接使用,会自动解包,无需.value
注意:Vue 的
computed
会自动追踪响应式的依赖,也就意味着当class.students
改变时,相应的classType
也会同步更新。
computed vs methods
有些细心的同学可能会发现,如果定义一个 method 也可以实现同样的效果。
但两者的区别在于,computed 是缓存的结果,他只有在其关联的依赖更新时,才会重新计算。而这也解释了 Date.now() 不会更新的问题:
复制代码
而定义的 method 则总是会在 页面重新渲染时,重新执行。
评论