watch监听的使用

watch() 函数的作用是监听数据变化,可以监听单个数据或多个数据。

监听单个数据,代码如下。

<template>
  <div>
    <h1>{{ num }}</h1>
    <button @click="num++">+1</button>
  </div>
</template>

<script>
// 1.引用 watch 函数
import { watch, ref } from "vue";

export default {
  setup() {
    var num = ref(10);
    // 2.使用 watch 函数监听 num 数据
    watch(num, (newValue, oldValue) => {
      // newValue 是新数据
      // oldValue 是旧数据
      console.log(newValue, oldValue);
    });
    return {
      num,
    };
  },
};
</script>

监听多个数据,代码如下。

<template>
  <div>
    <h1>{{ num }}</h1>
    <h1>{{ num1 }}</h1>
    <button @click="addNum">+1</button>
  </div>
</template>

<script>
// 1.引用 watch 函数
import { watch, ref, reactive } from "vue";

export default {
  setup() {
    var num = ref(10);
    var num1 = ref(20);
    // 2.在 watch 函数中使用数组形式监听 num 和 num1 数据
    watch(
      [num, num1],
      ([newNum, newNum1], [oldNum, oldNum1]) => {
        console.log(newNum, oldNum);
        console.log(newNum1, oldNum1);
      }
    );
    var addNum = () => {
      num.value++;
      num1.value++;
    };
    return {
      num,
      num1,
      addNum,
    };
  },
};
</script>