vue如何解決代碼需要在dom渲染之后執(zhí)行問題
vue解決代碼需要在dom渲染之后執(zhí)行
當(dāng)代碼需要延遲到dom從新渲染之后執(zhí)行時(shí)使用
- 組件的.$nextTick(回調(diào)函數(shù))方法,會(huì)把回調(diào)推遲到下一個(gè)DOM更新周期之后執(zhí)行。通俗的理解是:等組件DOM更新完成之后,在執(zhí)行回調(diào)函數(shù),從而能保證回調(diào)函數(shù)可以操作到最新的DOM元素
- 執(zhí)行下列代碼會(huì)報(bào)錯(cuò),因?yàn)樵趫?zhí)行上面代碼時(shí)候,值變化后沒有馬上進(jìn)行渲染頁面(生命周期函數(shù)beforUpdata)所以拿不到ref的值
- 為什么不能寫到updata中(因?yàn)辄c(diǎn)擊后會(huì)執(zhí)行一次獲取焦點(diǎn),當(dāng)輸入框失去焦點(diǎn)的時(shí)候,又要獲取一次焦點(diǎn),此時(shí)輸入框已經(jīng)隱藏) 此處不能使用 this.$refs.iptref.focus();
vue(數(shù)據(jù)改變,DOM不渲染問題)
1、組件內(nèi)部
屬性值地址空間內(nèi)引用地址改變,DOM不能渲染。
問題舉例:
this.items = [[],[],[],[]]
在items 中,修改任意一項(xiàng)數(shù)組中的值,DOM是不會(huì)更新的,
解決方案:
this.items = [...this.items]
通過解構(gòu)賦值,重新給items賦值。
2、組件之間傳值
父組件傳data改變,子組件未更新。
子組件中在mounted中對父組件傳的值,進(jìn)行了判斷等相關(guān)處理,通過改變子組件自身定義的狀態(tài)實(shí)現(xiàn)效果。
此時(shí),父組件值更新,子組件不重新渲染,是因?yàn)椋附M件值改變子組件不會(huì)走mounted的生命周期。
處理方案:
使用watch監(jiān)聽父組件傳的值,當(dāng)值改變的時(shí)候,進(jìn)行對應(yīng)操作。
推薦使用:
子組件中直接使用父組件傳的值,如需類型轉(zhuǎn)換或者簡單判斷,直接通過三目運(yùn)算符判斷使用,就省去了對父組件傳值的監(jiān)聽步驟。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問題
這篇文章主要介紹了elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue2.0基于vue-cli+webpack父子組件通信(實(shí)例講解)
下面小編就為大家?guī)硪黄猇ue2.0基于vue-cli+webpack父子組件通信(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09element組件中自定義組件的樣式不生效問題(vue scoped scss無效)
這篇文章主要介紹了解決element組件中自定義組件的樣式不生效問題(vue scoped scss無效),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09