Vue3监听属性与Computed的区别详解

 更新时间:2024年02月19日 09:55:25   作者:戛然而止ro  
在 Vue 3 中,watch 和 computed 都是非常重要的概念,它们都可以用于观察和响应数据的变化,但在使用场景和原理上存在明显的区别,本文将详细解析 Vue 3 中监听属性 (watch) 和计算属性 (computed) 的区别,需要的朋友可以参考下

一、引言

在 Vue 3 中,watch 和 computed 都是非常重要的概念,它们都可以用于观察和响应数据的变化,但在使用场景和原理上存在明显的区别。本文将详细解析 Vue 3 中监听属性 (watch) 和计算属性 (computed) 的区别,帮助你更好地理解它们的用法。

二、监听属性 (watch)

watch 是 Vue 3 中用于观察和响应数据变化的机制之一。你可以使用 watch 来监听单个数据源的变化,并在数据变化时执行相应的回调函数。

1. 基本用法

import { ref, watch } from 'vue';  
  
export default {  
  setup() {  
    const count = ref(0);  
  
    watch(count, (newValue, oldValue) => {  
      console.log(`Count changed from ${oldValue} to ${newValue}`);  
    });  
  
    return {  
      count  
    };  
  }  
};

2. 监听多个属性

import { reactive, watch } from 'vue';  
  
export default {  
  setup() {  
    const state = reactive({  
      count: 23,  
      name: 'Jiaranerzhi'  
    });  
  
    watch(  
      () => [state.count, state.name],  
      ([newCount, newName], [oldCount, oldName]) => {  
        console.log(`Count changed from ${oldCount} to ${newCount}`);  
        console.log(`Name changed from ${oldName} to ${newName}`);  
      }  
    );  
  
    return {  
      ...state  
    };  
  }  
};

3. 深度监听

watch(  
  state,  
  (newValue, oldValue) => {  
    // 当 state 中的任何属性发生变化时触发  
  },  
  { deep: true }  
);

三、计算属性 (computed)

computed 是 Vue 3 中另一种用于观察和响应数据变化的机制。与 watch 不同,computed 主要用于根据已有的数据进行计算并返回一个新的值,这个新的值会被 Vue 缓存,只有当依赖的数据发生变化时才会重新计算。

1. 基本用法

import { ref, computed } from 'vue';  
  
export default {  
  setup() {  
    const firstName = ref('Alen');  
    const lastName = ref('Jia');  
  
    const fullName = computed(() => {  
      return `${firstName.value} ${lastName.value}`;  
    });  
  
    return {  
      firstName,  
      lastName,  
      fullName  
    };  
  }  
};

2. 监听多个属性

computed 会自动追踪其依赖的数据,并根据这些数据的变化重新计算。因此,你可以很方便地在 computed 函数中使用多个数据属性。

3. 缓存机制

computed 的一个重要特点是它的缓存机制。只有当其依赖的数据发生变化时,computed 属性才会重新计算。这可以提高性能,特别是在进行复杂计算或需要频繁访问计算属性时。

四、区别总结

  • 用途watch 主要用于观察和响应数据的变化并执行相应的操作,而 computed 主要用于根据已有的数据进行计算并返回一个新的值。
  • 触发时机watch 是在数据变化时触发回调函数,而 computed 是在访问其值时进行计算(如果依赖的数据发生变化)。
  • 缓存computed 具有缓存机制,只有当依赖的数据发生变化时才会重新计算,而 watch 没有缓存机制。
  • 性能:对于需要频繁访问的计算属性,computed 通常比 watch 更高效,因为它可以避免不必要的重复计算。

五、结语

在 Vue 3 中,watch 和 computed 都是非常重要的工具,它们可以帮助你更好地观察和响应数据的变化。选择使用哪种机制取决于你的具体需求和场景。希望本文能够帮助你更好地理解和使用 Vue 3 中的 watch 和 computed的区别。

以上就是Vue3监听属性与Computed的区别详解的详细内容,更多关于Vue3监听属性与Computed区别的资料请关注脚本之家其它相关文章!

相关文章

  • vuex store 缓存存储原理分析

    vuex store 缓存存储原理分析

    这篇文章主要介绍了vuex store 缓存存储原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 深入浅析Vue全局组件与局部组件的区别

    深入浅析Vue全局组件与局部组件的区别

    这篇文章主要介绍了Vue全局组件与局部组件的区别,通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • vue脚手架vue-cli的学习使用教程

    vue脚手架vue-cli的学习使用教程

    本篇文章主要介绍了vue脚手架vue-cli的学习使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 详解vue-router数据加载与缓存使用总结

    详解vue-router数据加载与缓存使用总结

    这篇文章主要介绍了详解vue-router数据加载与缓存使用总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 关于Vue中过滤器的必懂小知识

    关于Vue中过滤器的必懂小知识

    vue过滤器可以在不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,下面这篇文章主要给大家介绍了关于Vue中过滤器必懂小知识的相关资料,需要的朋友可以参考下
    2021-10-10
  • vue代码分割的实现(codesplit)

    vue代码分割的实现(codesplit)

    这篇文章主要介绍了vue代码分割的实现(codesplit),做了代码分割后,会将代码分离到不同的bundle中,然后进行按需加载这些文件,需要的朋友可以参考下
    2018-11-11
  • 使用elementUI实现将图片上传到本地的示例

    使用elementUI实现将图片上传到本地的示例

    今天小编就为大家分享一篇使用elementUI实现将图片上传到本地的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 详解如何理解vue的key属性

    详解如何理解vue的key属性

    这篇文章主要介绍了详解如何理解vue的key属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue3中 引入Ant Design的操作方法

    Vue3中 引入Ant Design的操作方法

    Ant Design 是一个开源库,可让您创建吸引人的响应式网站。如果您想使用经过充分测试且易于学习的框架,那么它是您下一个项目的绝佳选择,这篇文章主要介绍了如何在 Vue 3 中使用 Ant Design,需要的朋友可以参考下
    2023-04-04
  • Vue 服务端渲染SSR示例详解

    Vue 服务端渲染SSR示例详解

    这篇文章主要介绍了Vue 服务端渲染SSR示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论