什么是Vue.nextTick()??

定义:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操作的 js代码;

理解:nextTick(),是将回调函数延迟在下一次dom更新数据后调用,简单的理解是:当数据更新了,在dom中渲染后,自动执行该函数,

 1 <template>
 2   <div class="hello">
 3     <div>
 4       <button id="firstBtn" @click="testClick()" ref="aa">{{testMsg}}</button>
 5     </div>
 6   </div>
 7 </template>
 8  
 9 <script>
10 export default {
11   name: 'HelloWorld',
12   data () {
13     return {
14       testMsg:"原始值",
15     }
16   },
17   methods:{
18     testClick:function(){
19       let that=this;
20       that.testMsg="修改后的值";
21       console.log(that.$refs.aa.innerText);   //that.$refs.aa获取指定DOM,输出:原始值
22     }
23   }
24 }
25 </script>
26  

使用this.$nextTick()

1   methods:{
2     testClick:function(){
3       let that=this;
4       that.testMsg="修改后的值";
5       that.$nextTick(function(){
6         console.log(that.$refs.aa.innerText);  //输出:修改后的值
7       });
8     }
9   }

注意:Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM.

posted @ 2022-06-05 14:46  丹江路39号  阅读(37)  评论(0)    收藏  举报