Vue.js 中 computed 和 watch 的区别及运用场景

阅读时长 4 分钟读完

Vue.js 中 computed 和 watch 的区别及运用场景

在 Vue.js 中,computed 和 watch 是两个非常重要的属性。它们都可以监听数据的变化,但它们的用途和运用场景不同。在本文中,我们将会深入探讨 computed 和 watch 的区别以及它们各自的使用场景,并通过示例代码来说明它们的具体使用方法。

  1. computed

computed 属性用来计算派生数据,可以依赖其他数据的变化而自动更新视图。computed 应该是纯函数,也就是说,computed 的值只能由 computed 中的其他属性计算而来,不能修改其它的数据。这样可以确保 computed 代码的可靠性和可预测性。

使用 computed 的场景:

  • 对于需要动态计算的数据,比如列表的筛选、排序等,可以使用 computed 来处理。
  • 如果一个数据的值需要基于多个数据计算才能得出,也应该使用 computed 来处理。

示例代码:

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

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

运行效果:在输入框中输入文字,就可以动态筛选出包含该文字的水果。

  1. watch

watch 属性用来观察数据的变化,当数据发生变化时,会执行对应的方法。watch 用来监听数据的变化,是响应性编程的重要工具。

使用 watch 的场景:

  • 监听一个数据的变化并进行一些操作,比如在某个数据发生变化后发送一个请求或更新本地存储等。
  • 监听组件中的路由变化,根据路由参数获取数据并更新视图。

示例代码:

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

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

运行效果:点击按钮可以改变 message 的值,并且在控制台上会输出新旧值。

总结

通过本文的介绍,我们可以看到,computed 和 watch 都有自己的特点和运用场景。在实际开发中,要根据具体的需求来选择使用哪个属性。同时,在编写代码时,应该遵循 Vue.js 的响应式规则,保证代码的可靠性和性能的高效性。

参考文献

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

纠错
反馈