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

Vue實現(xiàn)實時監(jiān)聽頁面寬度高度變化

 更新時間:2024年03月27日 15:32:51   作者:嫣嫣細語  
這篇文章主要為大家詳細介紹了Vue如何實現(xiàn)實時監(jiān)聽頁面寬度高度變化,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

vue監(jiān)聽頁面寬高

運用的主要技術(shù):watch監(jiān)聽

話不多說直接上代碼,自行研究

 <template>
  <div class="rightContainer">
    <h1>監(jiān)聽頁面寬高</h1>
    <h2>當前整個頁面寬度{{ windowWidth }}px</h2>
    <h2>當前整個頁面高度{{ windowHeight }}px</h2>
  </div>
</template>
<script>
export default {
  name: 'WatchsHW',
  data() {
    return {
      windowHeight: document.body.clientHeight,
      windowWidth: document.body.clientWidth
    }
  },
  watch: {
    // 監(jiān)聽頁面高度
    windowHeight(val) {
      console.log('實時屏幕高度:', val, this.windowHeight)
    },
    // 監(jiān)聽頁面寬度
    windowWidth(val) {
      console.log('實時屏幕寬度:', val, this.windowHeight)
    }
 
  },
 
  mounted() {
    // <!--把window.onresize事件掛在到mounted函數(shù)上-->
    window.onresize = () => {
      return (() => {
        this.windowHeight = document.documentElement.clientHeight // 高
        this.windowWidth = document.documentElement.clientWidth // 寬
      })()
    }
  },
 
  methods: {
 
  }
}
</script>
 
<style lang="scss" scoped>
.rightContainer{
  width: 100%;
  text-align: center;
  overflow: hidden;
}
</style>
 

知識補充

除了上文的方法,小編還為大家整理了一些Vue實時監(jiān)聽的其他方法,希望對大家有所幫助

Watch

watch的作用可以監(jiān)控一個值的變換,并調(diào)用因為變化需要執(zhí)行的方法。可以通過watch動態(tài)改變關(guān)聯(lián)的狀態(tài)。

簡單點說,就是實時監(jiān)聽某個數(shù)據(jù)的變化。

1、普通監(jiān)聽

<template>
<!-- 監(jiān)聽屬性 -->
  <div>
    <p>{{num}}</p>
    <button @click="num++">按鈕</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      num:30
 
    }
  },
  watch:{
    // 第1種格式:
    // num(newVal,oldVal){
    //   // 什么時候執(zhí)行, num的值發(fā)生變化的時候,就執(zhí)行這里的代碼
    //   console.log("num被修改了",newVal,oldVal);
    // },
    // 第2種格式:
    num:{
      handler(newVal,oldVal){
        // 什么時候執(zhí)行, num的值發(fā)生變化的時候,就執(zhí)行這里的代碼
        console.log("num被修改了",newVal,oldVal);
      }
    }
  }
}
</script>
 
<style lang = "less" scoped>
  
</style>

2、立即監(jiān)聽

如果我們需要在最初綁定值的時候也執(zhí)行函數(shù),則就需要用到immediate屬性。

<template>
<!-- 立即監(jiān)聽 -->
  <div>
    <p>{{num}}</p>
    <button @click="num++">按鈕</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      num:30
 
    }
  },
  watch:{
    num:{
      handler(newVal,oldVal){
        // 什么時候執(zhí)行, num的值發(fā)生變化的時候,就執(zhí)行這里的代碼
        console.log("num被修改了",newVal,oldVal);
      },
      immediate:true   // 立即監(jiān)聽
    }
  }
}
</script>
 
<style lang = "less" scoped>
  
</style>

immediate需要搭配handler一起使用,其在最初綁定時,調(diào)用的函數(shù)也就是這個handler函數(shù)。

3、深度監(jiān)聽

當需要監(jiān)聽一個對象的改變時,普通的watch方法無法監(jiān)聽到對象內(nèi)部屬性的改變,只有data中的數(shù)據(jù)才能夠監(jiān)聽到變化,此時就需要deep屬性對對象進行深度監(jiān)聽。

<template>
<!-- 深度監(jiān)聽 -->
  <div>
    <p>{{obj.age}}</p>
    <button @click="obj.age++">按鈕</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      obj:{
        name:"Vue",
        age:7
      }
 
    }
  },
  watch:{
    // obj:{
    //   handler(newVal,oldVal){
    //     // 什么時候執(zhí)行, obj中一旦有屬性發(fā)生變化,就會執(zhí)行這里的代碼
    //     console.log("name或者age被修改了",newVal,oldVal);
    //   },
    //   deep:true
    // }

    "obj.age":{
      handler(newVal,oldVal){
        // 什么時候執(zhí)行, age被修改的時候來執(zhí)行
        console.log("age被修改了",newVal,oldVal);
      },
    }
  }
}
</script>
 
<style lang = "less" scoped>
  
</style>

注意:

1、如果監(jiān)聽的數(shù)據(jù)是一個對象,那么 immediate: true失效;

2、一般使用于對引用類型的監(jiān)聽,深度監(jiān)聽,如監(jiān)聽一個Object,只要Object里面的任何一個字段發(fā)生變化都會被監(jiān)聽,但是比較消耗性能,根據(jù)需求使用,能不用則不用。

3、因為上面代碼obj是引用數(shù)據(jù)類型,val, oldVal指向一致,導致看到的結(jié)果一樣。

4、deep優(yōu)化

我們可以通過點語法獲取對象中的屬性,然后轉(zhuǎn)為字符串,即是對深度監(jiān)聽的優(yōu)化

<template>
  <div class="home">
    <h3>{{obj.age}}</h3>
    <button @click="btnClick">按鈕</button>
  </div>
</template>

<script>
export default {
  name: "Home",
  data() {
    return {
      obj: {
        name: "Lucy",
        age: 13
      }
    };
  },
  methods: {
    btnClick() {
      this.obj.age = 33;
    }
  },
  watch: {
    // 通過點語法獲取對象中的屬性,然后轉(zhuǎn)為字符串,即是對深度監(jiān)聽的優(yōu)化
    "obj.age": {
      handler(val, oldVal) {
        console.log(val, oldVal);
      },
      deep: true,
      immediate: true,		// 此時監(jiān)聽的數(shù)據(jù)不是一個對象,可以使用immediate
    }
  }
};
</script>

到此這篇關(guān)于Vue實現(xiàn)實時監(jiān)聽頁面寬度高度變化的文章就介紹到這了,更多相關(guān)Vue實時監(jiān)聽頁面寬高內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探討Vue計算屬性與監(jiān)聽器的區(qū)別和用途

    深入探討Vue計算屬性與監(jiān)聽器的區(qū)別和用途

    在Vue的開發(fā)中,計算屬性(Computed Properties)和監(jiān)聽器(Watchers)是兩種非常重要的概念,它們都用于響應式地處理數(shù)據(jù)變化,本文將帶你深入了解計算屬性和監(jiān)聽器的區(qū)別,以及在何時使用它們,感興趣的朋友可以參考下
    2023-09-09
  • Vue3.0組件通信mitt源碼ts實例解析

    Vue3.0組件通信mitt源碼ts實例解析

    這篇文章主要為大家介紹了Vue3.0組件通信mitt源碼ts實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Vue項目的網(wǎng)絡請求代理到封裝步驟詳解

    Vue項目的網(wǎng)絡請求代理到封裝步驟詳解

    這篇文章主要介紹了Vue項目的網(wǎng)絡請求代理到封裝步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 如何為老vue項目添加vite支持詳解

    如何為老vue項目添加vite支持詳解

    Vite是一個開發(fā)環(huán)境工具,旨在提高我們的開發(fā)速度,下面這篇文章主要給大家介紹了關(guān)于如何為老vue項目添加vite支持的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Vue前端后端的交互方式?axios

    Vue前端后端的交互方式?axios

    這篇文章主要介紹了Vue前端后端的交互方式?axios,axios?為第三方數(shù)據(jù)請求庫,下文具體的內(nèi)容介紹需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • Vue利用插件實現(xiàn)打印功能的示例詳解

    Vue利用插件實現(xiàn)打印功能的示例詳解

    這篇文章主要為大家詳細介紹了Vue如何利用vue-print-nb插件實現(xiàn)打印功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學一下
    2023-03-03
  • Vue3項目中引入ElementUI并使用的示例詳解

    Vue3項目中引入ElementUI并使用的示例詳解

    ElementUI是一個強大的PC端UI組件框架,它不依賴于vue,但是卻是當前和vue配合做項目開發(fā)的一個比較好的ui框架,本文主要介紹了如何在vue3中引入使用ElementUI,需要的可以參考一下
    2023-06-06
  • vue2-elementUI部分組件樣式修改方法

    vue2-elementUI部分組件樣式修改方法

    這篇文章主要介紹了vue2-elementUI部分組件樣式修改,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • vue3.0運行npm run dev報錯Cannot find module node:url

    vue3.0運行npm run dev報錯Cannot find module&

    本文主要介紹了vue3.0運行npm run dev報錯Cannot find module node:url,因為使用的node版本是14.15.1低于15.0.0導致,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • elementui中樹形表格切換展開不同層級的示例代碼

    elementui中樹形表格切換展開不同層級的示例代碼

    這篇文章主要介紹了elementui中樹形表格切換展開不同層級,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

金堂县| 和林格尔县| 吴江市| 正镶白旗| 昭觉县| 石嘴山市| 巴马| 连云港市| 焦作市| 东兰县| 鹤峰县| 兖州市| 福鼎市| 锦州市| 共和县| 靖西县| 永春县| 嘉善县| 鲁甸县| 汪清县| 普兰县| 临安市| 新巴尔虎右旗| 宝坻区| 商城县| 桦川县| 灵川县| 阳高县| 黎川县| 綦江县| 高邑县| 施秉县| 报价| 玉环县| 临洮县| 云林县| 景谷| 龙井市| 乾安县| 西和县| 公安县|