使用 vue 實(shí)例更好的監(jiān)聽事件及vue實(shí)例的方法
文章舉例說明一下在 vue 中如何更好的監(jiān)聽瀏覽器事件。原文介紹了一種新增 vue 實(shí)例的方法,單獨(dú)監(jiān)聽事件。這樣代碼書寫較為簡練,容易管理。
當(dāng)監(jiān)聽如下事件的傳統(tǒng)做法是:
- window.scrollX
- window.scrollY
- window.innerHeight
- window.innerWidth
通常需要書寫很多代碼:
created () { this.$el.addEventListener('click', this.someMethod) }, destroyed () { this.$el.removeEventListener('click', () => this.someMethod) }
更好的方式是使用新的 Vue 實(shí)例
import Vue from 'vue' const WindowInstanceMap = new Vue({ data() { return { scrollY: 0 } }, created() { window.addEventListener('scroll', e => { this.scrollY = window.scrollY }) }, }) export default WindowInstanceMap
然后在項(xiàng)目中使用:
// AppNav.vue import WindowInstanceMap from './WindowInstanceMap.js' export default { computed: { scrollY () { return WindowInstanceMap.scrollY }, isCollapsed () { return this.scrollY < 100 } } }
這樣做的好處是:
- 不會大量占用 dev-tool 的版面顯示變動信息
- 減少主要項(xiàng)目的代碼
- 因?yàn)?dev-tool 不支持多實(shí)例的調(diào)試,因此需要對這部分代碼保持簡單
最后看看效果:
總結(jié)
以上所述是小編給大家介紹的使用 vue 實(shí)例更好的監(jiān)聽事件及vue實(shí)例的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
- Vue唯一可以更改vuex實(shí)例中state數(shù)據(jù)狀態(tài)的屬性對象Mutation的講解
- 在vue項(xiàng)目中優(yōu)雅的使用SVG的方法實(shí)例詳解
- Vue axios全局?jǐn)r截 get請求、post請求、配置請求的實(shí)例代碼
- vue2.0移動端滑動事件vue-touch的實(shí)例代碼
- Vue監(jiān)聽事件實(shí)現(xiàn)計(jì)數(shù)點(diǎn)擊依次增加的方法
- vue1.0和vue2.0的watch監(jiān)聽事件寫法詳解
- vue v-on監(jiān)聽事件詳解
- 詳解使用vue-router進(jìn)行頁面切換時滾動條位置與滾動監(jiān)聽事件
相關(guān)文章
淺談vue-props的default寫不寫有什么區(qū)別
這篇文章主要介紹了淺談vue-props的default寫不寫有什么區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08vue項(xiàng)目中如何調(diào)用多個不同的ip接口
這篇文章主要介紹了vue項(xiàng)目中如何調(diào)用多個不同的ip接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08Vue3.0 自己實(shí)現(xiàn)放大鏡效果案例講解
這篇文章主要介紹了Vue3.0 自己實(shí)現(xiàn)放大鏡效果案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07vue-resource攔截器設(shè)置頭信息的實(shí)例
下面小編就為大家?guī)硪黄獀ue-resource攔截器設(shè)置頭信息的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10