vue如何解決代碼需要在dom渲染之后執(zhí)行問(wèn)題
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í)候,值變化后沒(méi)有馬上進(jìn)行渲染頁(yè)面(生命周期函數(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不渲染問(wèn)題)
1、組件內(nèi)部
屬性值地址空間內(nèi)引用地址改變,DOM不能渲染。
問(wèn)題舉例:
this.items = [[],[],[],[]]
在items 中,修改任意一項(xiàng)數(shù)組中的值,DOM是不會(huì)更新的,
解決方案:
this.items = [...this.items]
通過(guò)解構(gòu)賦值,重新給items賦值。
2、組件之間傳值
父組件傳data改變,子組件未更新。
子組件中在mounted中對(duì)父組件傳的值,進(jìn)行了判斷等相關(guān)處理,通過(guò)改變子組件自身定義的狀態(tài)實(shí)現(xiàn)效果。
此時(shí),父組件值更新,子組件不重新渲染,是因?yàn)?,父組件值改變子組件不會(huì)走mounted的生命周期。
處理方案:
使用watch監(jiān)聽(tīng)父組件傳的值,當(dāng)值改變的時(shí)候,進(jìn)行對(duì)應(yīng)操作。
推薦使用:
子組件中直接使用父組件傳的值,如需類型轉(zhuǎn)換或者簡(jiǎn)單判斷,直接通過(guò)三目運(yùn)算符判斷使用,就省去了對(duì)父組件傳值的監(jiān)聽(tīng)步驟。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue項(xiàng)目打包成Docker鏡像包的簡(jiǎn)單步驟
最近做時(shí)速云項(xiàng)目部署,需要將前端項(xiàng)目打成鏡像文件,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包成Docker鏡像包的簡(jiǎn)單步驟,需要的朋友可以參考下2023-10-10elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問(wèn)題
這篇文章主要介紹了elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue2.0基于vue-cli+webpack父子組件通信(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Vue2.0基于vue-cli+webpack父子組件通信(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09element組件中自定義組件的樣式不生效問(wèn)題(vue scoped scss無(wú)效)
這篇文章主要介紹了解決element組件中自定義組件的樣式不生效問(wèn)題(vue scoped scss無(wú)效),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue?el-pagination分頁(yè)查詢封裝的示例代碼
本文主要介紹了vue?el-pagination分頁(yè)查詢封裝的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06