• vue中wtach和computed的区别与联系


    举例说明vue2中watch和computed的区别与联系

    Vue中,watchcomputed都是用于观察数据的变化,并根据变化做出相应的响应。它们之间有以下区别和联系:

    1. 区别:

      • watch是一个被动的观察者,它监视指定的数据,当数据变化时执行相应的操作函数。watch通常用于监听一个或多个特定的数据,以便在数据发生变化时执行一些异步或开销较大的操作。
      • computed是一个计算属性,它基于依赖的数据进行计算,并返回计算结果。computed通常用于对数据进行转换、过滤或合并等操作,并将结果缓存起来,只有依赖的数据发生变化时,才会重新计算。computed是基于响应式的数据变化来自动更新的。
    2. 联系:

      • 它们都可以依赖于其他响应式数据,并在这些数据变化时自动更新。
      • 它们都可以使用过滤函数对数据进行处理和转换。
      • 它们都可以使用getter和setter来访问和修改计算属性或监听的数据。

    下面是一个简单的示例来说明它们的区别与联系:

    <template>
      <div>
        <p>输入的值: {{ inputValue }}p>
        <p>输入的值的平方: {{ computedValue }}p>
      div>
    template>
    
    <script>
    export default {
      data() {
        return {
          inputValue: 0,
        };
      },
      computed: {
        computedValue() {
          return this.inputValue ** 2;
        },
      },
      watch: {
        inputValue(newVal) {
          console.log(`输入的值发生变化:${newVal}`);
        },
      },
    };
    script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在上面的例子中,inputValue是一个响应式的数据,通过computedValue计算属性返回了inputValue的平方。当inputValue发生变化时,watch监听到变化并打印出新的值。这样,无论是通过用户输入改变inputValue的值还是直接在代码中修改,都会触发相应的操作。

    总结起来,watch适合处理异步或开销较大的操作,而computed适合对数据进行转换和缓存计算结果。

    举例说明 ,vue3中watch,wtacheffect和computed的联系与区别

    Vue 3 中的 watchwatchEffectcomputed 都是用于观察和响应 Vue 组件数据变化的机制,但它们之间有一些关键的区别。

    1. watch:

    watch 是 Vue 2 和 Vue 3 中的一个功能,允许你观察特定的数据源,并在它们变化时执行一些代码。在 Vue 3 中,watch 需要你明确指定你需要观察的数据源,并且需要提供一个回调函数,当数据源发生变化时,这个回调函数会被调用。

    例如:

    watch(
      () => data.someValue,
      (newValue, oldValue) => {
        console.log('someValue changed from', oldValue, 'to', newValue);
      }
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. watchEffect:

    watchEffect 是 Vue 3 中新增的一个功能。与 watch 不同,watchEffect 会自动追踪你在回调函数中使用的所有响应式依赖,无需你手动指定。这意味着,如果你在回调中访问了某个响应式数据源,那么当这个数据源发生变化时,回调会自动重新运行。

    例如:

    watchEffect(() => {
      console.log('data.someValue is now', data.someValue);
    });
    
    • 1
    • 2
    • 3
    1. computed:

    computed 属性是 Vue 2 和 Vue 3 中用于创建基于其它响应式数据源的派生值的机制。与 watchwatchEffect 不同,computed 属性是缓存的,只有在其依赖的数据源发生变化时才会重新计算。这意味着,如果一个 computed 属性的依赖没有改变,那么访问这个 computed 属性将返回上次计算的结果,而不会重新运行计算函数。

    例如:

    const computedValue = computed(() => {
      return data.someValue.toUpperCase();
    });
    
    • 1
    • 2
    • 3

    总结一下:watchwatchEffect 都是用于观察数据变化并执行回调的机制,但 watch 需要你手动指定观察的数据源,而 watchEffect 会自动追踪你的依赖。computed 属性则是用于创建基于其它数据源的派生值,并且是缓存的。

  • 相关阅读:
    什么是闭包
    python内置函数 C
    [JVM]类加载的过程(学习总结)
    想要顺利拿下订单,外贸人的价格谈判思维你GET了吗?
    ChinaSoft 论坛巡礼|面向云游戏的云侧软件技术论坛
    androidStudio第一次运行报错无法运行
    c++处理图像---绘制物体的凸包:cv::convexHull
    jenkins介绍
    Mac配置iTerm2、Git等
    >>数据管理:DAMA简介
  • 原文地址:https://blog.csdn.net/BradenHan/article/details/133724743