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

老生常談Vue中的偵聽(tīng)器watch

 更新時(shí)間:2022年10月15日 12:09:33   作者:東非不開(kāi)森  
開(kāi)發(fā)中我們?cè)赿ata返回的對(duì)象中定義了數(shù)據(jù),這個(gè)數(shù)據(jù)通過(guò)插值語(yǔ)法等方式綁定到template中,這篇文章主要介紹了Vue中的偵聽(tīng)器watch,需要的朋友可以參考下

一、偵聽(tīng)器watch

(思維導(dǎo)圖不太完善,因?yàn)槭前凑兆约嚎炊姆绞接浀?,如有錯(cuò)誤,還請(qǐng)指正)

1.1.初識(shí)偵聽(tīng)器watch

??
watch:觀看,監(jiān)視

那么什么是偵聽(tīng)器watch

  • 開(kāi)發(fā)中我們?cè)?code>data返回的對(duì)象中定義了數(shù)據(jù),這個(gè)數(shù)據(jù)通過(guò)插值語(yǔ)法等方式綁定到template中;
  • 當(dāng)數(shù)據(jù)變化時(shí),template會(huì)自動(dòng)進(jìn)行更新來(lái)顯示最新的數(shù)據(jù);
  • 但是在某些情況下,我們希望在代碼邏輯中監(jiān)聽(tīng)某個(gè)數(shù)據(jù)的變化,這個(gè)時(shí)候就需要用偵聽(tīng)器watch來(lái)完成了;

1.2.Vue的data的watch

??
案例:

  • 我們希望用戶(hù)在input中輸入一個(gè)問(wèn)題;
  • 每當(dāng)用戶(hù)輸入了最新的內(nèi)容,我們就獲取到最新的內(nèi)容,并且使用該問(wèn)題去服務(wù)器查詢(xún)答案;
  • 那么,我們就需要實(shí)時(shí)的去獲取最新的數(shù)據(jù)變化;
  • 此時(shí)就要用到偵聽(tīng)器watch去監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化
const app = Vue.createApp({
        data() {
          return {
            message: "Hello Vue",
            info: { name: "kk", age: 18 },
          };
        },
        methods: {
          changeMessage() {
            this.message = "hello kk";
            this.info = { name: "kk" };
          },
        },

        watch: {
          // 1.默認(rèn)有兩個(gè)參數(shù),newValue/oldValue
          message(newValue, oldVale) {
            console.log("message數(shù)據(jù)發(fā)生了變化", newValue, oldValue);
          },
          info(newValue, oldValue) {
            // 2.如果是對(duì)象類(lèi)型,那么拿到的是代理對(duì)象
            console.log("info數(shù)據(jù)發(fā)生了變化", newValue, oldValue);
            console.log(newValue.name, oldValue.name);

            // 3.獲取原始對(duì)象
            console.log({ ...newValue });

1.3.Vue的watch偵聽(tīng)選項(xiàng)

??

  • 創(chuàng)建一個(gè)對(duì)象,賦值給info
  • 點(diǎn)擊按鈕的時(shí)候會(huì)修改info.name的值
  • 此時(shí)使用watch并不能偵聽(tīng)info,因?yàn)槟J(rèn)情況下,watch只是在偵聽(tīng)info的引用變化,對(duì)于內(nèi)部屬性的變化是不會(huì)做出響應(yīng)的
  • 所以我們可以使用deep深度監(jiān)聽(tīng)
  • 希望一開(kāi)始的就會(huì)立即執(zhí)行一次:這個(gè)時(shí)候我們使用immediate選項(xiàng);無(wú)論數(shù)據(jù)是否變化,偵聽(tīng)的函數(shù)都會(huì)有限執(zhí)行一次的
<div id="app">
      <h2>{{info.name}}</h2>
      <button @click="changeInfo">修改info</button>
    </div>
 const app = Vue.createApp({
        data() {
          return {
            info: { name: "kk", age: 18 },
          };
        },

        methods: {
          changeInfo() {
            // 創(chuàng)建一個(gè)對(duì)象,賦值給info
            this.info = { name: "kk" };

            // 直接修改對(duì)象里的一個(gè)屬性
            this.info.name = "kk";
          },
        },

        watch: {
          // 默認(rèn)watch監(jiān)聽(tīng)不會(huì)進(jìn)行深度監(jiān)聽(tīng)
          info(newValue, oldValue) {
            console.log("偵聽(tīng)到info改變", newValue, oldValue);
          },

          // 進(jìn)行深度監(jiān)聽(tīng)
          info: {
            handler(newValue, oldValue) {
              console.log("偵聽(tīng)到info改變", newValue, oldValue);
              console.log(newValue === oldValue);
            },

            // 監(jiān)聽(tīng)器選項(xiàng)
            // info進(jìn)行深度監(jiān)聽(tīng)
            deep: true,

            // 第一次渲染直接執(zhí)行一次監(jiān)聽(tīng)器
            immediate: true,
          },
        },

        "info.name": function (newValue, oldValue) {
          console.log("name發(fā)生改變", newValue, oldValue);
        },
      });

      app.mount("#app");

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

相關(guān)文章

  • Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用

    Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用

    Vue3中新增了一種特殊的監(jiān)聽(tīng)器watchEffect,本文主要介紹了Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Vue3解析markdown并實(shí)現(xiàn)代碼高亮顯示的詳細(xì)步驟

    Vue3解析markdown并實(shí)現(xiàn)代碼高亮顯示的詳細(xì)步驟

    Vue的markdown解析庫(kù)有很多,如markdown-it、vue-markdown-loader、marked、vue-markdown等,這篇文章主要介紹了Vue3解析markdown并實(shí)現(xiàn)代碼高亮顯示,需要的朋友可以參考下
    2022-07-07
  • Vue3中Vite和Vue-cli的特點(diǎn)與區(qū)別詳解

    Vue3中Vite和Vue-cli的特點(diǎn)與區(qū)別詳解

    vue-cli是Vue早期推出的一款腳手架,使用webpack創(chuàng)建Vue項(xiàng)目,可以選擇安裝需要的各種插件,比如Vuex、VueRouter,下面這篇文章主要給大家介紹了關(guān)于Vue3中Vite和Vue-cli的特點(diǎn)與區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • VUE JS 使用組件實(shí)現(xiàn)雙向綁定的示例代碼

    VUE JS 使用組件實(shí)現(xiàn)雙向綁定的示例代碼

    本篇文章主要介紹了VUE JS 使用組件實(shí)現(xiàn)雙向綁定,詳細(xì)的介紹了vue的雙向數(shù)據(jù)綁定原理以及核心代碼模塊,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • vue多次循環(huán)操作示例

    vue多次循環(huán)操作示例

    這篇文章主要介紹了vue多次循環(huán)操作,結(jié)合實(shí)例形式分析了vue.js針對(duì)json嵌套數(shù)據(jù)的多次循環(huán)讀取操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • Vue實(shí)現(xiàn)的父組件向子組件傳值功能示例

    Vue實(shí)現(xiàn)的父組件向子組件傳值功能示例

    這篇文章主要介紹了Vue實(shí)現(xiàn)的父組件向子組件傳值功能,結(jié)合完整實(shí)例形式簡(jiǎn)單分析了vue.js組件傳值的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Vue mixins詳解與使用技巧

    Vue mixins詳解與使用技巧

    Vue mixins提供了一個(gè)非常靈活的方式來(lái)分發(fā)Vue組件中的可復(fù)用功能,通過(guò)全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡(jiǎn)化代碼,提高開(kāi)發(fā)效率,并允許在不同組件間共享功能
    2024-09-09
  • vue封裝swiper代碼實(shí)例解析

    vue封裝swiper代碼實(shí)例解析

    這篇文章主要介紹了vue封裝swiper代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 基于Vue的SPA動(dòng)態(tài)修改頁(yè)面title的方法(推薦)

    基于Vue的SPA動(dòng)態(tài)修改頁(yè)面title的方法(推薦)

    這篇文章主要介紹了基于Vue的SPA動(dòng)態(tài)修改頁(yè)面title的方法,需要的朋友可以參考下
    2018-01-01
  • vue中的傳值及賦值問(wèn)題

    vue中的傳值及賦值問(wèn)題

    這篇文章主要介紹了vue中的傳值及賦值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評(píng)論

苏尼特左旗| 沂南县| 庄浪县| 三门县| 织金县| 会昌县| 龙江县| 客服| 清苑县| 霍城县| 伊吾县| 怀化市| 大同市| 大方县| 枝江市| 阿拉善左旗| 三亚市| 昭通市| 什邡市| 灌云县| 本溪市| 顺义区| 蕲春县| 武穴市| 成武县| 五指山市| 青田县| 彩票| 凤山县| 泰宁县| 梧州市| 吉安市| 独山县| 丁青县| 兰州市| 沅陵县| 民和| 凤翔县| 苍南县| 衡阳县| 高淳县|