最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3中watch監(jiān)聽(tīng)使用詳解

 更新時(shí)間:2022年08月04日 09:43:09   作者:皮蛋solo周呀  
watch 函數(shù)用來(lái)偵聽(tīng)特定的數(shù)據(jù)源,并在回調(diào)函數(shù)中執(zhí)行副作用,下面這篇文章主要給大家介紹了關(guān)于Vue3中watch監(jiān)聽(tīng)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

Vue2使用watch

<template>
  <div>總合:{{ sum }}<button @click="sum++">點(diǎn)擊累加</button></div>
</template>
<script>
import { ref } from "vue";
export default {
  // vue2中使用watch
  watch: {
    sum: {
      deep: true,
      handler(newValue, oldValue) {
        console.log("總合 sum 變化:", newValue, oldValue);
      },
    },
  },
  setup() {
    let sum = ref(0);
    return {
      sum,
    };
  },
};
</script>

<style>
</style>

Vue3使用watch

watch有三個(gè)參數(shù):

參數(shù)1:監(jiān)聽(tīng)的參數(shù)

參數(shù)2:監(jiān)聽(tīng)的回調(diào)函數(shù)

參數(shù)3:監(jiān)聽(tīng)的配置(immediate)

情況1

監(jiān)視r(shí)ef所定義的一個(gè)響應(yīng)式數(shù)據(jù)

<template>
  <div>總合:{{ sum }}<button @click="sum++">點(diǎn)擊累加</button></div>
</template>
// 監(jiān)視r(shí)ef所定義的一個(gè)響應(yīng)式數(shù)據(jù)
<script>
import { ref, watch } from "vue";
export default {
  setup() {
    let sum = ref(0);
    // 監(jiān)視r(shí)ef所定義的一個(gè)響應(yīng)式數(shù)據(jù)
    watch(sum, (newValue, oldValue) => {
      console.log("sum ==> ", newValue, oldValue);
    });
    return {
      sum,
    };
  },
};
</script>

情況2

監(jiān)視r(shí)ef所定義的多個(gè)響應(yīng)式數(shù)據(jù)

<template>
  <div>總合:{{ sum }}<button @click="sum++">點(diǎn)擊累加</button></div>
  <hr />
  <div>
    msg:{{ msg }}
    <button @click="msg += '~'">改變msg</button>
  </div>
</template>
<script>
import { ref, watch } from "vue";
export default {
  setup() {
    let sum = ref(0);
    let msg = ref("watch使用"):
    // 情況2:監(jiān)視r(shí)ef所定義的多個(gè)響應(yīng)式數(shù)據(jù)
    watch([sum, msg], (newValue, oldValue) => {
      console.log("sum/msg ==> ", newValue, oldValue);
    },{immediate:true});
    return {
      sum,
      msg,
    };
  },
};
</script>

情況3

監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)

注意:

  • 這里無(wú)法正確獲取oldValue
  • 強(qiáng)制開(kāi)啟了深度監(jiān)聽(tīng)(deep配置不生效)
<template>
  <div>
     <h3>情況3::監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)</h3>
      <div>姓名:{{person.name}}</div>
      <div>年齡:{{person.age}}</div>
    <button @click="person.name += '~'">修改姓名</button>
    <button @click="person.age ++">修改年齡</button>
  </div>
 </template>
<script>
import { ref, watch,reactive } from "vue";
export default {
  setup() {
    let person = reactive({
      name: "lisa",
      age: 18,
      job: {
        joblist: {
          money: 10,
        },
      },
    });
        // 情況3、監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)
    /* 
      若watch監(jiān)視的是reactive定義的響應(yīng)式數(shù)據(jù),則無(wú)法正確獲得oldvalue! 
      若watch監(jiān)視的是reactive定義的響應(yīng)式數(shù)據(jù),則強(qiáng)制開(kāi)啟了深度監(jiān)視
    */
    watch(person,(newValue, oldValue) => {
        console.log("person ==> ", newValue, oldValue);
      },{immediate:true,deep:false}//這里的deep配置不再奏效
    );
    return {
      person,
    };
  },
};
</script>

情況4

監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某個(gè)屬性

<template>
  <div>
     <h3>情況4::監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某個(gè)屬性</h3>
      <div>姓名:{{person.name}}</div>
      <div>年齡:{{person.age}}</div>
    <button @click="person.name += '~'">修改姓名</button>
    <button @click="person.age ++">修改年齡</button>
  </div>
 </template>
<script>
import { ref, watch,reactive } from "vue";
export default {
  setup() {
    let person = reactive({
      name: "lisa",
      age: 18,
      job: {
        joblist: {
          money: 10,
        },
      },
    });
    // 情況4、監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某個(gè)屬性
    watch(()=>person.name,(newValue, oldValue) => {
        console.log("person.name ==> ", newValue, oldValue);
      });

    return {
      person,
    };
  },
};
</script>

情況5

監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某些屬性

<template>
  <div>
     <h3>情況4::監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某個(gè)屬性</h3>
      <div>姓名:{{person.name}}</div>
      <div>年齡:{{person.age}}</div>
    <button @click="person.name += '~'">修改姓名</button>
    <button @click="person.age ++">修改年齡</button>
  </div>
 </template>
<script>
import { ref, watch,reactive } from "vue";
export default {
  setup() {
    let person = reactive({
      name: "lisa",
      age: 18,
      job: {
        joblist: {
          money: 10,
        },
      },
    });
    // 情況5、監(jiān)視r(shí)eactive所定義的一個(gè)響應(yīng)式數(shù)據(jù)中的某些屬性
    watch([()=>person.name,()=>person.age],(newValue, oldValue) => {
        console.log("person.name/person.age ==> ", newValue, oldValue);
    });
    return {
      person,
    };
  },
};
</script>

特殊情況

watch監(jiān)聽(tīng)reactive中對(duì)象的嵌套對(duì)象

<template>
  <div>
      <div>姓名:{{person.name}}</div>
      <div>年齡:{{person.age}}</div>
      <div>薪資:{{person.job.joblist.money}} K</div>
    <button @click="person.name += '~'">修改姓名</button>
    <button @click="person.age ++">修改年齡</button>
    <button @click="person.job.joblist.money ++">提薪</button>
  </div>
 </template>
<script>
import { ref, watch,reactive } from "vue";
export default {
  setup() {
    let person = reactive({
      name: "lisa",
      age: 18,
      job: {
        joblist: {
          money: 10,
        },
      },
    });
    // 特殊情況、監(jiān)視r(shí)eactive所定義嵌套對(duì)象
    watch(()=>person.job,(newValue, oldValue) => {
        console.log("person.job對(duì)象發(fā)生變化 ==> ", newValue, oldValue);
    },{deep:true});//此處由于監(jiān)視的是reactive素定義的對(duì)象中的某個(gè)屬性,所以deep配置有效

    return {
      person,
    };
  },
};
</script>

 總結(jié)

到此這篇關(guān)于Vue3中watch監(jiān)聽(tīng)使用詳解的文章就介紹到這了,更多相關(guān)Vue3中watch使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue的Options用法說(shuō)明

    Vue的Options用法說(shuō)明

    這篇文章主要介紹了Vue的Options用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所
    2020-08-08
  • vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue頁(yè)面更新patch的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue 引入公共css文件的簡(jiǎn)單方法(推薦)

    vue 引入公共css文件的簡(jiǎn)單方法(推薦)

    下面小編就為大家分享一篇vue 引入公共css文件的簡(jiǎn)單方法(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程

    Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程,要解決NPM安裝依賴報(bào)錯(cuò),首先要分析出錯(cuò)誤的原因,文中將解決的過(guò)程介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Vue引入騰訊地圖全過(guò)程(搜索獲取定位)

    Vue引入騰訊地圖全過(guò)程(搜索獲取定位)

    最近需要在項(xiàng)目中使用地圖顯示點(diǎn)位信息,所以引入了騰訊地圖,這篇文章主要給大家介紹了關(guān)于Vue引入騰訊地圖(搜索獲取定位)的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Vue組件傳參11種方式舉例介紹

    Vue組件傳參11種方式舉例介紹

    這篇文章主要給大家介紹了關(guān)于Vue組件傳參11種方式的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Vue2.0 UI框架ElementUI使用方法詳解

    Vue2.0 UI框架ElementUI使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue2.0 UI框架ElementUI的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 使用Vue3實(shí)現(xiàn)一個(gè)穿梭框效果的示例代碼

    使用Vue3實(shí)現(xiàn)一個(gè)穿梭框效果的示例代碼

    這篇文章主要給大家介紹了如何使用?Vue3?實(shí)現(xiàn)一個(gè)穿梭框效果,當(dāng)選中數(shù)據(jù),并且點(diǎn)擊相對(duì)應(yīng)的方向箭頭時(shí),選中的數(shù)據(jù)會(huì)發(fā)送到對(duì)面,并且數(shù)據(jù)會(huì)保持正確的順序進(jìn)行排列,文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 這15個(gè)Vue指令,讓你的項(xiàng)目開(kāi)發(fā)爽到爆

    這15個(gè)Vue指令,讓你的項(xiàng)目開(kāi)發(fā)爽到爆

    這篇文章主要介紹了這15個(gè)Vue指令,讓你的項(xiàng)目開(kāi)發(fā)爽到爆,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • vue vant中picker組件的使用

    vue vant中picker組件的使用

    這篇文章主要介紹了vue vant中picker組件的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11

最新評(píng)論

乌拉特后旗| 临漳县| 绍兴县| 老河口市| 珠海市| 宁夏| 岳普湖县| 保定市| 加查县| 潮州市| 黑河市| 开江县| 常熟市| 永靖县| 集安市| 农安县| 武隆县| 辽中县| 游戏| 宾川县| 绥中县| 沾化县| 九寨沟县| 廉江市| 金乡县| 东乡| 余江县| 武乡县| 保亭| 楚雄市| 汕尾市| 黄骅市| 绥芬河市| 宝清县| 宜兰县| 华坪县| 金昌市| 崇左市| 尤溪县| 民乐县| 游戏|