Skip to content

Vue3Watch

在Vue3里面使用watch必须引用

watch 里面也是一个函数,它里面必须要接收两个参数

  • 第一个参数就是数组,监听要改变的值

里面分成两类。数据要是 ref 的就直接使用,如果是 reactive 或者 Store 里面的数据就必须要使用一个函数.里面返回值写 xxx.数据名称

  • 第二个参数就是回调函数

里面有两个参数,第一个就是新的值 第二个就是老的值

html
<template>
  <div>
    <span>{{count}}</span>
    <span>{{double}}</span>
    <div @click="changecount">点击增加</div>
  </div>
</template>

<script>
  import { ref, computed, reactive, toRefs, onMounted, watch } from "vue"; //ref接收一个参数 返回一个响应式对象  //computed是一个函数接收一个参数是函数
  export default {
    setup() {
      onMounted(() => {
        console.log("挂在了");
      });
      const data = reactive({
        count: 0,
        double: computed(() => {
          return data.count * 2;
        }),
        changecount: () => {
          data.count++;
        },
      });
      let data2 = ref("哈哈");
      watch(
        [
          data2,
          () => {
            return data.count;
          },
          () => {
            return data.double;
          },
        ],
        (newval, oldval) => {
          console.log(newval);
          console.log(oldval);
          console.log(data2.value); //只能这样获取value
        }
      );
      const result = toRefs(data);
      return {
        ...result,
      };
    },
  };
</script>
<style lang="less" scoped></style>