Vue 中的 computed

阅读时长 3 分钟读完

在 Vue 中,我们可以利用 computed 属性去书写一些数据的派生逻辑。Computed 属性会侦听依赖的数据变化并缓存计算结果,从而避免直接繁琐的数据计算。

基本语法

-- -------------------- ---- -------
--- -----
  --- -------
  ----- -
    ----- --
    ----- -
  --
  --------- -
    ---- ---------- -
      ------ --------- - ----------
    -
  -
---

在这个示例代码中,我们定义了两个数据属性 num1 和 num2,并利用 computed 属性计算出它们的和 sum。在模板中可以直接使用 {{ sum }} 访问计算结果。

计算属性 vs. 常规函数

上述示例中,利用函数返回值来计算 sum 我们把这个函数称之为计算属性。我们可以用与计算属性相同的方法用一个函数来代替计算属性,效果是相同的。但是,与普通函数不同的是,计算属性会缓存计算结果,并依赖于侦听的数据,在其中的代码只在需要的时候执行。相比之下,普通函数则在每次访问时都会执行。

-- -------------------- ---- -------
--- -----
  --- -------
  ----- -
    ----- --
    ----- -
  --
  -------- -
    ---- ---------- -
      ------ --------- - ----------
    -
  -
---

Getter 和 Setter

Computed 属性也可以进行 Set 和 Get 操作,类似于对象的 getter 和 setter。

-- -------------------- ---- -------
--- -----
  --- -------
  ----- -
    ----- --
    ----- -
  --
  --------- -
    ---- -
      ---- ---------- -
        ------ --------- - ----------
      --
      ---- --------------- -
        --- --- - -----------------
        --------- - -------------------
        --------- - -------------------
      -
    -
  -
---

在这个示例代码中,我们定义了两个数据属性 num1 和 num2,并利用 computed 属性计算出它们的和 sum。在模板中可以直接使用 {{ sum }} 访问计算结果。但是,我们还可以通过 v-model 操作符,修改计算结果的值。在计算属性的 Backing Property 中定义 Set 函数可以将计算属性转化为一个可编辑的属性。

计算属性的依赖

在刚才的示例代码中,computed 属性 sum 依赖了 num1 和 num2 的值。所以,当 num1 或 num2 的值发生变化时,sum 的值也会跟着发生变化。Vue 能够自动侦测数据变化并触发更新,这就是计算属性的依赖性。

总结

  • Vue 中的 computed 可以用于实现数据的派生逻辑。
  • 计算属性会根据依赖进行缓存,优化性能。
  • 计算属性也可以进行 Set 和 Get 操作,使其可编辑。
  • 计算属性的值依赖于侦听的数据,当这些数据变化时它也会自动更新。

在实践中,可以大量运用计算属性和它的气泡,提升数据处理效率和代码可读性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645a71d3968c7c53b0ce36da

纠错
反馈