vue中$nextTick的用法講解
vue是非常流行的框架,他結合了angular和react的優(yōu)點,從而形成了一個輕量級的易上手的具有雙向數(shù)據(jù)綁定特性的mvvm框架。本人比較喜歡用之。在我們用vue時,我們經常用到一個方法是this.$nextTick,相信你也用過。我常用的場景是在進行獲取數(shù)據(jù)后,需要對新視圖進行下一步操作或者其他操作時,發(fā)現(xiàn)獲取不到dom。因為賦值操作只完成了數(shù)據(jù)模型的改變并沒有完成視圖更新。在這個時候我們需要用到本章介紹的函數(shù)。
雖然 Vue.js 通常鼓勵開發(fā)人員沿著“數(shù)據(jù)驅動”的方式思考,避免直接接觸 DOM,但是有時我們確實要這么做。比如你在Vue生命周期的created()/mounted()鉤子函數(shù)進行的DOM操作一定要放在Vue.nextTick()的回調函數(shù)中。原因是什么呢,原因是在created()/mounted()鉤子函數(shù)執(zhí)行的時候DOM 其實并未進行任何渲染,而此時進行DOM操作無異于徒勞,所以此處一定要將DOM操作的js代碼放進Vue.nextTick()的回調函數(shù)中。

為什么要用nextTick?
請看如下一段代碼
new Vue({
el: '#app',
data: {
list: []
},
mounted: function () {
this.get()
},
methods: {
get: function () {
this.$http.get('/api/article').then(function (res) {
this.list = res.data.data.list
// ref list 引用了ul元素,我想把第一個li顏色變?yōu)榧t色
this.$refs.list.getElementsByTagName('li')[0].style.color = 'red'
})
},
}
})
我在獲取到數(shù)據(jù)后賦值給數(shù)據(jù)模型中l(wèi)ist屬性,然后我想引用ul元素找到第一個li把它的顏色變?yōu)榧t色,但是事實上,這個要報錯了,我們知道,在執(zhí)行這句話時,ul下面并沒有l(wèi)i,也就是說剛剛進行的賦值操作,當前并沒有引起視圖層的更新。因此,在這樣的情況下,vue給我們提供了$nextTick方法,如果我們想對未來更新后的視圖進行操作,我們只需要把要執(zhí)行的函數(shù)傳遞給this.$nextTick方法,vue就會給我們做這個工作。
new Vue({
el: '#app',
data: {
list: []
},
mounted: function () {
this.$nextTick(() => {
this.get()
})
},
methods: {
get: function () {
this.$http.get('/api/article').then(function (res) {
this.list = res.data.data.list
// ref list 引用了ul元素,我想把第一個li顏色變?yōu)榧t色
this.$refs.list.getElementsByTagName('li')[0].style.color = 'red'
})
},
}
})
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
vue-cli腳手架config目錄下index.js配置文件的方法
下面小編就為大家分享一篇vue-cli腳手架config目錄下index.js配置文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
基于vue實現(xiàn)網(wǎng)站前臺的權限管理(前后端分離實踐)
這篇文章主要介紹了基于vue實現(xiàn)網(wǎng)站前臺的權限管理(前后端分離實踐),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
vue手機端input change時,無法執(zhí)行的問題及解決
這篇文章主要介紹了vue手機端input change時,無法執(zhí)行的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05

