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

vue中watch的實(shí)際開發(fā)學(xué)習(xí)筆記

 更新時(shí)間:2022年11月08日 11:32:19   作者:奶廠小程  
watch是Vue實(shí)例的一個(gè)屬性是用來響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí),這個(gè)方式是最有用的,下面這篇文章主要給大家介紹了關(guān)于vue中watch的實(shí)際開發(fā)筆記,需要的朋友可以參考下

前言

本文主要是積累一下在使用前端的watch開發(fā)過程中遇到的問題點(diǎn)和經(jīng)驗(yàn)。

一、watch是什么

根據(jù)本人的理解,它就是一個(gè)監(jiān)聽器,就是說監(jiān)聽的某個(gè)數(shù)據(jù)發(fā)生了變化,那么它就會(huì)執(zhí)行相對(duì)應(yīng)的函數(shù)。它主要使用在哪些場(chǎng)景呢,比如:一個(gè)數(shù)據(jù)影響著多個(gè)數(shù)據(jù)的業(yè)務(wù)。

  watch:{  // 當(dāng)這個(gè)workType發(fā)生改變時(shí),就是1個(gè)數(shù)據(jù)的改變,就會(huì)影響到type5和foll的改變
    'queryParams.workType':function (newName,oldName){
      if(newName==1){
        this.type5 = this.type3,
        this.foll = true
      }else if(newName==2){
        this.type5 = this.type4,
        this.foll = false
      }
    }
  },

二、watch不同的實(shí)際使用場(chǎng)景開發(fā)案例

1.場(chǎng)景1:加載完成后登錄監(jiān)聽

代碼如下:

  watch: {
    isLoading (newVal, oldVal) { //1. 原來的值,和現(xiàn)在的值,是否有變化,如果有變化,觸發(fā)這個(gè)函數(shù)
      console.log('2 isLoading newVal is ', newVal, ' , oldVal is ', oldVal)
 
      //2. 當(dāng)加載完成時(shí), 還需要判斷用戶是否已登錄
      const username = getLoginedUsername(this.$store)
      if (username != undefined && username != null) {
        // 已登錄時(shí), 跳轉(zhuǎn)首頁
        toHomePage(this)
      }
    }
  },
 
  computed: {
    isLoading () {
      return isLoading(this.$store)
    }
  },
 
import { isLoading, getLoginedUsername } from 'utils/utils'

2.場(chǎng)景2:前面不同的選擇框,影響下面的不同的選擇框的選項(xiàng)內(nèi)容

1.data的代碼如下:

 data() {
    return {
      verifyData: this.propData,
      editBoxShow: false,
 
      type3: [{
        worksRegion: '0',
        label: '牛奶'
      },{
        worksRegion:"1",
        label: "面包"
      },
        {
          worksRegion:"3",
          label: "水果"
        }
      ],
      type4: [{
        worksRegion: '0',
        label: '炸雞'
      },{
        worksRegion:"1",
        label: "漢堡"
      },{
          worksRegion:"2",
          label: "可樂"
        },
        {
          worksRegion:"3",
          label: "北京烤鴨"
        }
      ],
      type5:[],
     
      queryParams:{
        id:"",
        workType:'',//1開發(fā) , 2 測(cè)試 
        foll:true
      },
 
    };
}

2.watch的監(jiān)聽

  watch:{  // 當(dāng)這個(gè)workType發(fā)生改變時(shí),就是1個(gè)數(shù)據(jù)的改變,就會(huì)影響到type5和foll的改變
    'queryParams.workType':function (newName,oldName){
      if(newName==1){
        this.type5 = this.type3,
        this.foll = true
      }else if(newName==2){
        this.type5 = this.type4,
        this.foll = false
      }
    }
  },

3.場(chǎng)景效果描述

比如:      第1個(gè)選框:開發(fā);

                第2個(gè)選框: A,B,C

比如:      第1個(gè)選框:測(cè)試;

                第2個(gè)選框: A,B,C,D

  由上所示,當(dāng)?shù)?個(gè)選框,選擇“開發(fā)”選項(xiàng)時(shí),則第2個(gè)選框出現(xiàn)的選項(xiàng)內(nèi)容為ABC;當(dāng)?shù)?個(gè)選框,選擇“測(cè)試”選項(xiàng)時(shí),則第2個(gè)選框出現(xiàn)的選項(xiàng)內(nèi)容為ABCD;這時(shí)就實(shí)現(xiàn)了當(dāng)初的上一個(gè)不同選項(xiàng)出現(xiàn)下一個(gè)不同的選項(xiàng)內(nèi)容的效果了。

原理描述:它是主要是通過判斷queryParams的里面的workType的參數(shù)的變化,來進(jìn)行監(jiān)聽的,如果當(dāng)用戶點(diǎn)了開發(fā)這個(gè)選項(xiàng),那么這個(gè)workType的newName就是1了,所以就觸發(fā)了watch里面的這個(gè)函數(shù)了,那么這里就可以進(jìn)行業(yè)務(wù)方面的處理即可。

3.場(chǎng)景3:深度監(jiān)聽

說明:
 
handler: 固定方法觸發(fā)
deep: 開啟深度監(jiān)聽
immediate: 頁面初始化時(shí)handler立即執(zhí)行一次
 
  data(){
    return {
      user: {
        userNo: "",
        sex: ""
      }
    }
  },
 
  // 監(jiān)聽整對(duì)象
  watch: {
        // 監(jiān)聽整個(gè)對(duì)象,對(duì)象里的每個(gè)屬性值的變化都會(huì)執(zhí)行handler,執(zhí)行后獲取的 newVal 值和 oldVal 值是一樣的
    user: {
      handler(newVal, oldVal){
        console.log(newVal, oldVal);
      },
      deep: true,
      immediate: true
    }
  }
 
 watch: {
       // 監(jiān)聽對(duì)象的某個(gè)屬性,被監(jiān)聽的屬性值發(fā)生變化就會(huì)執(zhí)行函數(shù),但獲取的 newVal 值和 oldVal 值不一樣
    'user.userNo': {
      handler(newVal, oldVal){
        console.log(newVal, oldVal);
      },
      deep: true,
      immediate: true
    }
  }
 
 

4.場(chǎng)景4:賦值使用

  watch: {
    traysNos (newVal, oldVal) {
      if ((newVal && !oldVal) || (newVal && oldVal && newVal !== oldVal)) {
        this.filterDeliverysOutLists = []
        this.deliverysOutsList = this.fullsDeliverysOutsLists
      }
    }
  },

5.場(chǎng)景5:改變標(biāo)記的true和false

   data () {
    return {
      loading: false,
      submitsCheck: true,
    }
  },
 
 watch: {
    'order.traysNos' (val) {
      if (val == null || val == '') {
        this.submitsCheck = true
      } else if (val) {
        this.submitsCheck = false
      }
    }
  },
 

6.場(chǎng)景6:頁面的跳轉(zhuǎn)

  watch: {
    reservesNo (newVal, oldVal) {
      if ((newVal && !oldVal) || (newVal && oldVal && newVal !== oldVal)) {
        this.reservesNo = newVal // 獲取到新值
        this.$router.replace({  // 跳轉(zhuǎn),注意,這種跳轉(zhuǎn),是不可以回退的
          query: {
            reservesNo: this.reservesNo  // 傳新值
          }
        })
        this.findOrderNo()  // 執(zhí)行其他的函數(shù)
      }
    }
  },

這個(gè)主要是深度監(jiān)聽的使用,如何監(jiān)聽某個(gè)對(duì)象中的某個(gè)屬性的變化,就是上面這個(gè)案例,看業(yè)務(wù)需求來進(jìn)行使用。

補(bǔ)充:watch簡(jiǎn)寫形式

如果只是監(jiān)聽單個(gè)簡(jiǎn)單的數(shù)據(jù),使用watch的簡(jiǎn)寫形式就可以滿足需求。

代碼如下:

<script>
export default {
  name: "Home",
  data() {
    return {
      text: ""
    };
  },
  watch: {
    text(newVal, oldVal) {
      
    }
  },
};
</script>

總結(jié)

本文主要是積累一下在使用前端的watch開發(fā)過程中遇到的問題點(diǎn)和經(jīng)驗(yàn)。

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

相關(guān)文章

  • Vue axios 跨域請(qǐng)求無法帶上cookie的解決

    Vue axios 跨域請(qǐng)求無法帶上cookie的解決

    這篇文章主要介紹了Vue axios 跨域請(qǐng)求無法帶上cookie的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決

    vue-router報(bào)錯(cuò):uncaught error during route 

    這篇文章主要介紹了vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue監(jiān)聽頁面滾動(dòng)到某個(gè)高度觸發(fā)事件流程

    vue監(jiān)聽頁面滾動(dòng)到某個(gè)高度觸發(fā)事件流程

    這篇文章主要介紹了vue監(jiān)聽頁面滾動(dòng)到某個(gè)高度觸發(fā)事件流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3中動(dòng)態(tài)修改樣式與級(jí)聯(lián)樣式優(yōu)先順序圖文詳解

    Vue3中動(dòng)態(tài)修改樣式與級(jí)聯(lián)樣式優(yōu)先順序圖文詳解

    在項(xiàng)目中,我們時(shí)常會(huì)遇到動(dòng)態(tài)的去綁定操作切換不同的CSS樣式,下面這篇文章主要給大家介紹了關(guān)于Vue3中動(dòng)態(tài)修改樣式與級(jí)聯(lián)樣式優(yōu)先順序的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • vue-cli 引入、配置axios的方法

    vue-cli 引入、配置axios的方法

    這篇文章主要介紹了vue-cli 引入axios的方法,文中還給大家提到了vue-cli 配置axios的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • vue中slot(插槽)的介紹與使用

    vue中slot(插槽)的介紹與使用

    這篇文章主要給大家介紹了關(guān)于vue中slot(插槽)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • vue如何實(shí)現(xiàn)自定義步驟條

    vue如何實(shí)現(xiàn)自定義步驟條

    這篇文章主要介紹了vue如何實(shí)現(xiàn)自定義步驟條問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue5中的事件修飾符(style)和template

    vue5中的事件修飾符(style)和template

    這篇文章主要介紹了vue5中的事件修飾符(style)和template,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue項(xiàng)目打包后可修改基礎(chǔ)接口地址配置的具體操作

    Vue項(xiàng)目打包后可修改基礎(chǔ)接口地址配置的具體操作

    vue項(xiàng)目打包過后發(fā)現(xiàn)地址錯(cuò)了或者發(fā)布到別的服務(wù)器發(fā)現(xiàn)請(qǐng)求的地址不對(duì),每次都要去重新打包,太浪費(fèi)時(shí)間,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包后可修改基礎(chǔ)接口地址配置的具體操作,需要的朋友可以參考下
    2022-08-08
  • vue3和beego跨域請(qǐng)求配置方式

    vue3和beego跨域請(qǐng)求配置方式

    文章介紹了如何在Vue3和Beego中配置跨域請(qǐng)求,在Beego的router.go文件的init函數(shù)中添加option函數(shù)來回應(yīng)預(yù)檢請(qǐng)求,以支持跨域請(qǐng)求,這是個(gè)人經(jīng)驗(yàn)分享,希望能幫助到大家
    2025-01-01

最新評(píng)論

红河县| 汝州市| 明溪县| 昌黎县| 平和县| 重庆市| 肇州县| 孟州市| 博野县| 五常市| 蒙城县| 旌德县| 磴口县| 金坛市| 方正县| 巴楚县| 山西省| 满洲里市| 林甸县| 新民市| 昭苏县| 中宁县| 黑水县| 博白县| 望城县| 庆安县| 城市| 清水县| 南溪县| 文成县| 纳雍县| 永清县| 新野县| 礼泉县| 句容市| 那坡县| 长兴县| 枝江市| 崇信县| 石楼县| 揭东县|