vue mounted 調(diào)用兩次的完美解決辦法
在開發(fā)中發(fā)現(xiàn)其中一個頁面moutned調(diào)用了兩次,而其他頁面正常,表示很懵逼,然后查找原因,終于找到了,其實(shí)歸根到底是要知道m(xù)ounted的調(diào)用機(jī)制問題;

情況:在這個頁面中出現(xiàn)了mounted 加載了兩次的情況;
方法:排除法
首先把 this.$store.commit() 方法注釋掉,發(fā)現(xiàn)就好了,只加載一次
初步判斷是commit 方法導(dǎo)致的
二 驗(yàn)證判斷是否正確,不使用commit 方法,該用直接改變變量狀態(tài)的方法,發(fā)現(xiàn)又加載了兩次;
再次判斷,不是由于commit引起的
三 猜想commit到底實(shí)現(xiàn)了什么邏輯,然后找到了v-if
v-if會重新渲染頁面,而mounted 又是在重新渲染完成之后調(diào)用的,所以猜想是v-if導(dǎo)致的
然后換成v-show 發(fā)現(xiàn)完美解決問題;
v-show 不會重新加載頁面,僅僅是顯示隱藏而已;

從網(wǎng)上找來的生命周期圖,各位網(wǎng)友可以了解一下,希望給你帶來一些啟發(fā);
PS:下面看下mounted函數(shù)調(diào)用技巧
為了確保dom成功渲染,利用setTimeout()
mounted() {
setTimeout(() => {
this._setSliderWidth()
this._initDots()
this._initSlider()
if (this.autoPlay) {
this._play()
}
}, 20)}
瀏覽器的刷新通常是17毫秒一次,所以這里用了20毫秒
總結(jié)
以上所述是小編給大家介紹的vue mounted 調(diào)用兩次的完美解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Vue3 style CSS 變量注入的實(shí)現(xiàn)
本文主要介紹了Vue3 style CSS 變量注入的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
詳解mpvue小程序中怎么引入iconfont字體圖標(biāo)
這篇文章主要介紹了詳解mpvue小程序中怎么引入iconfont字體圖標(biāo),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
vue項(xiàng)目使用$router.go(-1)返回時刷新原來的界面操作
這篇文章主要介紹了vue項(xiàng)目使用$router.go(-1)返回時刷新原來的界面操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue結(jié)合SignalR實(shí)現(xiàn)前后端實(shí)時消息同步
這篇文章主要為大家詳細(xì)介紹了Vue結(jié)合SignalR實(shí)現(xiàn)前后端實(shí)時消息同步,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
vue使用動態(tài)組件手寫Router View實(shí)現(xiàn)示例
這篇文章主要為大家介紹了vue使用動態(tài)組件手寫RouterView實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

