摘要:?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
摘要:的鉤子函數(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)...
摘要:上篇我們將菜單欄,商品展示結(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ù)格...
摘要:結(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ù)料方式工作。最...
摘要:如何添加這個(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)求...
摘要:本次分析的版本是。的實(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...
閱讀 1163·2021-11-24 10:43
閱讀 3119·2021-11-22 09:34
閱讀 3559·2021-10-08 10:04
閱讀 3941·2021-09-23 11:58
閱讀 3126·2019-08-30 15:44
閱讀 494·2019-08-30 13:01
閱讀 1165·2019-08-28 18:07
閱讀 1459·2019-08-26 13:42