欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

老生常談Vue中的偵聽器watch

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

一、偵聽器watch

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

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

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

那么什么是偵聽器watch

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

1.2.Vue的data的watch

??
案例:

  • 我們希望用戶在input中輸入一個(gè)問題;
  • 每當(dāng)用戶輸入了最新的內(nèi)容,我們就獲取到最新的內(nèi)容,并且使用該問題去服務(wù)器查詢答案;
  • 那么,我們就需要實(shí)時(shí)的去獲取最新的數(shù)據(jù)變化;
  • 此時(shí)就要用到偵聽器watch去監(jiān)聽數(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ì)象類型,那么拿到的是代理對(duì)象
            console.log("info數(shù)據(jù)發(fā)生了變化", newValue, oldValue);
            console.log(newValue.name, oldValue.name);

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

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

??

  • 創(chuàng)建一個(gè)對(duì)象,賦值給info
  • 點(diǎn)擊按鈕的時(shí)候會(huì)修改info.name的值
  • 此時(shí)使用watch并不能偵聽info,因?yàn)槟J(rèn)情況下,watch只是在偵聽info的引用變化,對(duì)于內(nèi)部屬性的變化是不會(huì)做出響應(yīng)的
  • 所以我們可以使用deep深度監(jiān)聽
  • 希望一開始的就會(huì)立即執(zhí)行一次:這個(gè)時(shí)候我們使用immediate選項(xiàng);無論數(shù)據(jù)是否變化,偵聽的函數(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)聽不會(huì)進(jìn)行深度監(jiān)聽
          info(newValue, oldValue) {
            console.log("偵聽到info改變", newValue, oldValue);
          },

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

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

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

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

      app.mount("#app");

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

相關(guān)文章

  • Vue-cli3.X使用px2 rem遇到的問題及解決方法

    Vue-cli3.X使用px2 rem遇到的問題及解決方法

    這篇文章主要介紹了Vue-cli3.X使用px2rem遇到的問題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐記錄

    Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐記錄

    無論單頁還是多頁,我的實(shí)現(xiàn)思路是總體配置404頁面的思路就是在前端路由表中添加一個(gè) path: '/404' 的路由,渲染相應(yīng)的404頁面。這篇文章主要介紹了Vue單頁及多頁應(yīng)用全局配置404頁面實(shí)踐,需要的朋友可以參考下
    2018-05-05
  • Vue3實(shí)現(xiàn)全局loading指令的示例詳解

    Vue3實(shí)現(xiàn)全局loading指令的示例詳解

    這篇文章主要介紹了Vue3實(shí)現(xiàn)全局loading指令,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Vue中methods的this指向問題淺析

    Vue中methods的this指向問題淺析

    相信我們寫Vue代碼時(shí)肯定都會(huì)在methods中用過this這個(gè)關(guān)鍵字,甚至還打印過this查看其內(nèi)容。最終發(fā)現(xiàn)該實(shí)例對(duì)象竟然是我們的Vue實(shí)例對(duì)象
    2022-10-10
  • vue函數(shù)防抖與節(jié)流的正確使用方法

    vue函數(shù)防抖與節(jié)流的正確使用方法

    防抖和節(jié)流的作用都是防止函數(shù)多次調(diào)用,下面這篇文章主要給大家介紹了關(guān)于vue函數(shù)防抖與節(jié)流的正確使用方法,需要的朋友可以參考下
    2021-05-05
  • 教你使用vue-autofit 一行代碼搞定自適應(yīng)可視化大屏

    教你使用vue-autofit 一行代碼搞定自適應(yīng)可視化大屏

    這篇文章主要為大家介紹了使用vue-autofit 一行代碼搞定自適應(yīng)可視化大屏教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 基于Vue的文字跑馬燈組件(npm 組件包)

    基于Vue的文字跑馬燈組件(npm 組件包)

    這篇文章主要介紹了基于Vue的文字跑馬燈組件(npm 組件包),需要的朋友可以參考下
    2017-05-05
  • 詳解Vue之父子組件傳值

    詳解Vue之父子組件傳值

    這篇文章主要介紹了Vue之父子組件傳值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue.js實(shí)例todoList項(xiàng)目

    vue.js實(shí)例todoList項(xiàng)目

    本篇文章主要介紹了vue.js實(shí)例todoList項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • vue腳手架項(xiàng)目創(chuàng)建步驟詳解

    vue腳手架項(xiàng)目創(chuàng)建步驟詳解

    這篇文章主要介紹了vue腳手架項(xiàng)目創(chuàng)建步驟詳解,文章講解的很清晰,初學(xué)者可以跟著步驟學(xué)習(xí)下
    2021-03-03

最新評(píng)論