vue3 setup中watch

vue2使用watch(简写)

<template >
  姓名:{{name}}
  <br>
  <button @click="change">修改姓名
  </button>
</template>
<script>
import { computed, reactive, ref } from "@vue/reactivity";
// 引入自定义hooks
export default {
  watch: {
    name(newvalue, oldvalue) {
      console.log(newvalue, oldvalue);
    },
  },
  setup() {
    let name = ref("张三");
    function change() {
      name.value = "李四";
    }
    return {
      name,
      change,
    };
  },
};
</script>

<style>
</style>

在这里插入图片描述
在这里插入图片描述

vue2使用watch(全写)

<template >
 <br>
年龄:{{sum}}
<button @click="change">修改年龄</button>
</template>
<script>
import {  reactive, ref } from '@vue/reactivity';
// 引入自定义hooks
export default {
  watch:{
      sum:{
     immediate:true,
     deep:true,
     handler(newvalue,oldvalue){
       console.log(newvalue,oldvalue);
     }
   },
  },
  setup() {
    let sum=ref(0)
    function change(){
      sum.value=12
    }
    return{
      sum,
      change
    }
  }
};
</script>

<style>
</style>

在这里插入图片描述
在这里插入图片描述

vue3使用watch 第一种(监听数据类型)

<template >
  sum:{{sum}}
  <br>
  <br>
  <button @click="change_sum">改变sum</button>
</template>
<script>
import { reactive, ref } from "@vue/reactivity";
import { watch } from "@vue/runtime-core";
// 引入自定义hooks
export default {
  person: {
    immediate: true,
    deep: true,
    handler(newvalue, oldvalue) {
      console.log(newvalue, oldvalue);
    },
  },
  setup() {
    let sum = ref(0);
    function change_sum() {
      sum.value++;
    }
    watch(sum, (newvalue, oldvalue) => {
      console.log(newvalue, oldvalue);
    });
    return {
      sum,
      change_sum,
    };
  },
};
</script>

<style>
</style>

在这里插入图片描述
在这里插入图片描述

vue3使用watch 第二种(监听多个数据)

<template >
  <br>
  sum:{{sum}}
  <br>
  meg:{{meg}}
  <br>
  <br>
  <button @click="change_sum">改变sum</button><button @click="change_meg">改变meg</button>
  <br>
</template>
<script>
import { reactive, ref } from "@vue/reactivity";
import { watch } from "@vue/runtime-core";
// 引入自定义hooks
export default {
  person: {
    immediate: true,
    deep: true,
    handler(newvalue, oldvalue) {
      console.log(newvalue, oldvalue);
    },
  },
  setup() {
    let sum = ref(0);
    let meg = ref("你好");
    function change_sum() {
      sum.value++;
    }
    function change_meg() {
      meg.value = "世界";
    }

    watch([sum, meg], (nwevalue, oldvalue) => {
      console.log(nwevalue, oldvalue);
    });
    return {
      sum,
      meg,
      change_sum,
      change_meg,
    };
  },
};
</script>

<style>
</style>

在这里插入图片描述

在这里插入图片描述

vue3使用watch 第四种(监听reactive响应数据)

<template >
 姓名:{{person.name}}
 <br>
年龄:{{person.age}}
<br>
新爱好:{{person.habbits.new_hits}}
<br>
旧爱好:{{person.habbits.old_hits}}
<br>
sum:{{sum}}
<br>
meg:{{meg}}
<br>
<br>
<button @click="change_sum">改变sum</button><button @click="change_meg">改变meg</button>
<br>
<br>
<button @click="change_name">修改姓名
</button>   &nbsp; <button @click="change_age">修改年龄</button>&nbsp;<button @click="change_newhits">修改新爱好</button>&nbsp;<button @click="change_oldhits">修改旧爱好</button>
</template>
<script>
import {  reactive, ref } from '@vue/reactivity';
import { watch } from '@vue/runtime-core';
// 引入自定义hooks
export default {
   person:{
     immediate:true,
     deep:true,
     handler(newvalue,oldvalue){
       console.log(newvalue,oldvalue);
     }
   },
  
  setup() {
    let person=reactive({
      name:"李四",
      age:12,
      habbits:{
        new_hits:["吃","喝","玩"],
        old_hits:["打代码","打代码","打代码"]
      }
    })
    let sum=ref(0)
    let meg=ref("你好")
    function change_sum(){
      sum.value++
    }
    function change_meg(){
      meg.value="世界"
    }
    function change_name(){
      person.name="张三"
    }
    function change_age(){
           person.age++
    }
    function change_newhits(){
            person.habbits.new_hits=["臭美","玩"]
    }
    function change_oldhits(){
      person.habbits.old_hits=["吃吃吃","谈恋爱"]
    }
    watch(person,(nwevalue,oldvalue)=>{
       console.log(nwevalue,oldvalue);
    })
    return{
     person,
     sum,
     meg,
   change_name,
   change_sum,
   change_age,
   change_newhits,
   change_oldhits,
      change_meg
    }
  }
};
</script>

<style>
</style>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

vue3使用watch 第四种(监听reactive响应数据里的某个属性)

<template >
 姓名:{{person.name}}
 <br>
年龄:{{person.age}}
<br>
新爱好:{{person.habbits.new_hits}}
<br>
旧爱好:{{person.habbits.old_hits}}
<br>
sum:{{sum}}
<br>
meg:{{meg}}
<br>
<br>
<button @click="change_sum">改变sum</button><button @click="change_meg">改变meg</button>
<br>
<br>
<button @click="change_name">修改姓名
</button>   &nbsp; <button @click="change_age">修改年龄</button>&nbsp;<button @click="change_newhits">修改新爱好</button>&nbsp;<button @click="change_oldhits">修改旧爱好</button>
</template>
<script>
import {  reactive, ref } from '@vue/reactivity';
import { watch } from '@vue/runtime-core';
// 引入自定义hooks
export default {
   person:{
     immediate:true,
     deep:true,
     handler(newvalue,oldvalue){
       console.log(newvalue,oldvalue);
     }
   },
  
  setup() {
    let person=reactive({
      name:"李四",
      age:12,
      habbits:{
        new_hits:["吃","喝","玩"],
        old_hits:["打代码","打代码","打代码"]
      }
    })
    let sum=ref(0)
    let meg=ref("你好")
    function change_sum(){
      sum.value++
    }
    function change_meg(){
      meg.value="世界"
    }
    function change_name(){
      person.name="张三"
    }
    function change_age(){
           person.age++
    }
    function change_newhits(){
            person.habbits.new_hits=["臭美","玩"]
    }
    function change_oldhits(){
      person.habbits.old_hits=["吃吃吃","谈恋爱"]
    }
    watch(()=>person.age,(nwevalue,oldvalue)=>{
       console.log(nwevalue,oldvalue);
    })
    return{
     person,
     sum,
     meg,
   change_name,
   change_sum,
   change_age,
   change_newhits,
   change_oldhits,
      change_meg
    }
  }
};
</script>

<style>
</style>

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万事胜意sy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值