<div id="app"> <h1 id="myh">{{msg}}</h1> <button @click="change">點擊</button> </div> <script> var vm = new Vue({ el: '#app', data: { msg: 'hello' }, methods: { change() { this.msg = 'itcast' // console.log(document.getElementById('myh').innerText); // 如果直接這樣打印,打印出來的結果不是我們想要的itcast,而是hello,因為this.msg = ‘itcast’ 它是異步的 this.$nextTick(() => { console.log(document.getElementById('myh').innerText) }) } } }) </script>
作用是:等你頁面dom中的數據渲染完之后,再執行回調函數中的方法。
vue中數據和dom渲染由於是異步的
this.$nextTick()方法主要是用在隨數據改變而改變的dom應用場景中,vue中數據和dom渲染由於是異步的,所以,要讓dom結構隨數據改變這樣的操作都應該放進this.$nextTick()
的回調函數中。created()中使用的方法時,dom還沒有渲染,如果此時在該鈎子函數中進行dom賦值數據(或者其它dom操作)時無異於徒勞,所以,此時this.$nextTick()就會被大量使用,而與created()對應的是mounted()的鈎子函數則是在dom完全渲染后才開始渲染數據,所以在mounted()中操作dom基本不會存在渲染問題。
轉:https://www.cnblogs.com/mushitianya/p/10510912.html
轉:https://blog.csdn.net/gaoxin666/article/details/96143571