成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue中mounted鉤子函數(shù)獲取節(jié)點(diǎn)高度出錯(cuò)

Bowman_han / 1409人閱讀

摘要:?jiǎn)栴}是當(dāng)我在鉤子函數(shù)中獲取的時(shí)候,在新開的頁(yè)簽中打開頁(yè)面,會(huì)得到錯(cuò)誤的,但是在當(dāng)前頁(yè)面刷新,就不會(huì)有問題。解決方案給圖片加上屬性,并在那個(gè)組件里的鉤子函數(shù)中寫,這里的是用的,兩個(gè)組件中事件響應(yīng)的辦法,不懂或者感興趣的可以點(diǎn)這里。

遇到的問題

最近在開發(fā)一個(gè)Vue的項(xiàng)目,好幾個(gè)頁(yè)面都有用到一個(gè) 頁(yè)面樓層滑動(dòng)的組件,我就直接封裝成了一個(gè),但是遇到一個(gè)bug,就是我需要得到這個(gè)組件的offsetTop,然后頁(yè)面滾動(dòng)到這個(gè)位置的時(shí)候,就設(shè)置position屬性為fixed,讓他固定在屏幕上。問題是當(dāng)我在mounted鉤子函數(shù)中獲取offsetTop的時(shí)候,在新開的頁(yè)簽中打開頁(yè)面,會(huì)得到錯(cuò)誤的offsetTop,但是在當(dāng)前頁(yè)面刷新,就不會(huì)有問題。

定位問題

后來查到問題,就是加載的問題,新窗口打開圖片,默認(rèn)是沒有帶緩存的,圖片是GET請(qǐng)求,是異步的,js運(yùn)行的肯定比圖片GET要快,所以當(dāng)執(zhí)行mounted鉤子函數(shù)的時(shí)候,圖片還沒有全部加載完,這時(shí)候就會(huì)得到一個(gè)錯(cuò)誤的offsetTop。

解決方案

給圖片加上ref屬性,并在那個(gè)組件里的mounted鉤子函數(shù)中寫,

this.$refs.img.onload = ()=>{
    Bus.$emit("loadImgSuccess")
}

這里的Bus是用的EventBus,兩個(gè)組件中事件響應(yīng)的辦法,不懂或者感興趣的可以點(diǎn)這里EventBus。
需要得到offsetTop的組件里面

Bus.$on("loadImgSuccess", () => {
    var offsetTop = this.$refs.dom.offsetTop  
})

這時(shí)候就可以確認(rèn)每次不管是頁(yè)面新打開還是當(dāng)前頁(yè)刷新都可以得到正確的offsetTop。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95060.html

相關(guān)文章

  • Vue 生命周期詳解

    摘要:的鉤子函數(shù)會(huì)在組件停用時(shí)被調(diào)用。是在構(gòu)造函數(shù)中的聲明的變量執(zhí)行鉤子函數(shù)執(zhí)行執(zhí)行鉤子函數(shù)執(zhí)行鉤子函數(shù)刷新前根據(jù)對(duì)中的進(jìn)行排序。 Vue 生命周期詳解 Vue 生命周期流程 最開始,用戶使用 new Vue() 創(chuàng)建根 Vue 實(shí)例,或者 Vue 實(shí)例化子組件都會(huì)調(diào)用_init方法(我們將這兩種實(shí)例都稱為vm): function Vue(options) { //Vue 構(gòu)...

    snowLu 評(píng)論0 收藏0
  • Vue實(shí)戰(zhàn)-菜單欄,商品展示數(shù)據(jù)交互(8)

    摘要:上篇我們將菜單欄,商品展示結(jié)構(gòu)完成,本次我們?yōu)檫@兩個(gè)部分接入數(shù)據(jù)。菜單欄接入數(shù)據(jù)導(dǎo)入組件,定義需要的數(shù)據(jù)格式導(dǎo)入滾動(dòng)組件導(dǎo)入商品頁(yè)面準(zhǔn)備需要的數(shù)據(jù)初始化組件。 上篇我們將菜單欄,商品展示結(jié)構(gòu)完成,本次我們?yōu)檫@兩個(gè)部分接入數(shù)據(jù)。 showImg(https://segmentfault.com/img/bVbu2JW?w=312&h=421); 菜單欄接入數(shù)據(jù) 導(dǎo)入組件,定義需要的數(shù)據(jù)格...

    chnmagnus 評(píng)論0 收藏0
  • Vue父子組件生命周期執(zhí)行順序初探

    摘要:結(jié)論父子組件生命周期鉤子的執(zhí)行順序遵循從外到內(nèi),然后再?gòu)膬?nèi)到外,不管嵌套幾層深,也遵循這個(gè)規(guī)律。組件化的設(shè)計(jì)思路大抵相同,中父子組件生命周期鉤子執(zhí)行順序,具體沒做探究,但是值得一提的是父組件的也是晚于子組件執(zhí)行的。 如今前端框架都流行組件化,頁(yè)面元素都可以使用組件進(jìn)行高度概括,那么處理組件之間的關(guān)系就如同處理頁(yè)面架構(gòu)一樣重要。正確理解組件之間的關(guān)系,才能讓代碼按照我們與預(yù)料方式工作。最...

    Yumenokanata 評(píng)論0 收藏0
  • 另辟蹊徑:vue單頁(yè)面,多路由,前進(jìn)刷新,后退不刷新

    摘要:如何添加這個(gè)條件,判斷用戶是否刷新了頁(yè)面呢我們知道,當(dāng)使用后,只有第一次進(jìn)入后會(huì)觸發(fā)鉤子函數(shù),再次進(jìn)入就不再執(zhí)行了。 目的:vue-cli構(gòu)建的vue單頁(yè)面應(yīng)用,某些特定的頁(yè)面,實(shí)現(xiàn)前進(jìn)刷新,后退不刷新,類似app般的用戶體驗(yàn)。注: 此處的刷新特指當(dāng)進(jìn)入此頁(yè)面時(shí),觸發(fā)ajax請(qǐng)求,向服務(wù)器獲取數(shù)據(jù)。不刷新特指當(dāng)進(jìn)入此頁(yè)面時(shí),不觸發(fā)ajax請(qǐng)求,而是使用之前緩存的數(shù)據(jù),以便減少服務(wù)器請(qǐng)求...

    Ocean 評(píng)論0 收藏0
  • 你想要的——vue源碼分析(2)

    摘要:本次分析的版本是。的實(shí)例化由上一章我們了解了類的定義,本章主要分析用戶實(shí)例化類之后,框架內(nèi)部做了具體的工作。所以我們先看看的構(gòu)造函數(shù)里面定義了什么方法。這個(gè)文件聲明了類的構(gòu)造函數(shù),構(gòu)造函數(shù)中直接調(diào)用了實(shí)例方法來初始化的實(shí)例,并傳入?yún)?shù)。 背景 Vue.js是現(xiàn)在國(guó)內(nèi)比較火的前端框架,希望通過接下來的一系列文章,能夠幫助大家更好的了解Vue.js的實(shí)現(xiàn)原理。本次分析的版本是Vue.js2...

    objc94 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<