发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。


Vue 可以通过 watch API 返回的一个 取消函数,可以在需要时取消该监听。

如何取消 watch

当你使用 Vue 的 watch API 时,它会返回一个函数,调用该函数即可取消观察者(即取消 watch)。

使用 watch API 时的取消方法

在 Vue 3 中,watch 是基于 Composition API 实现的,可以传入一个回调函数,并返回一个取消函数。

示例:

import { watch, ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    // 创建一个watch,并返回取消的函数
    const stopWatching = watch(count, (newValue, oldValue) => {
      console.log(`count changed from ${oldValue} to ${newValue}`);
    });

    // 在某个时刻取消watch
    setTimeout(() => {
      stopWatching();  // 取消监听
      console.log('watcher has been stopped');
    }, 5000);

    return {
      count
    };
  }
};

在这个例子中,watch 被用于监听 count 的变化。返回的 stopWatching 函数可以在后续的某个时间调用来取消这个 watch,例如在 setTimeout 中,5秒后取消监听。

具体步骤:

  1. 使用 watch 监听某个数据(如 count)。
  2. watch 会返回一个取消函数。
  3. 当你希望取消监听时,调用返回的取消函数(如 stopWatching())。

注意事项:

  • stopWatching() 只能在 Vue 3 中使用,因为 Vue 3 的 Composition API 才提供了这个返回值机制。
  • 在 Vue 2 中,watch 是在 datacomputed 选项中定义的,取消 watch 通常是通过在实例上手动管理监听事件来实现的,例如通过 $watch 返回的取消函数。

Vue 2 中如何取消 watch

如果你在 Vue 2 中使用 $watch 来进行数据监听,也可以通过返回的取消函数来取消观察。

Vue 2 示例:

new Vue({
  data: {
    count: 0
  },
  created() {
    // 监听 count 的变化
    const unwatch = this.$watch('count', (newValue, oldValue) => {
      console.log(`count changed from ${oldValue} to ${newValue}`);
    });

    // 取消监听
    setTimeout(() => {
      unwatch();  // 取消监听
      console.log('watcher has been stopped');
    }, 5000);
  }
});

在 Vue 2 中,$watch 返回一个取消函数,调用 unwatch() 可以取消该监听。

总结:

  • Vue 3 使用 watch API 时可以通过返回的停止函数来取消监听。
  • Vue 2 使用 $watch 时也可以通过返回的取消函数来停止观察。

这使得 Vue 在处理动态数据时能够更加灵活地管理观察者。

12-08 19:07