老师关于nextTick
我不是很理解。
如果nextTick
基于micro
的话,那么调用$nextTick
传入的cb
会在本次Tick的micro task
中执行,换句说说页面并非真正的渲染也没有开始paint
。而之所以通过$nextTick
可以获取到更新后的值,是说异步更新策略当开始执行flushCallBack
函数的时候,比如这段代码
<template>
<div id="app">
<div id="app1">{{ message }}</div>
<router-view />
</div>
</template>
<script>
import { addNotification } from '@/helpers/notice';
export default {
data() {
return {
message: '1',
};
},
mounted() {
addNotification();
const app1 = document.getElementById('app1');
this.message = 'wang.haoyu';
this.$nextTick(() => {
console.log(app1.innerHTML, 'inner should be 1');
});
},
};
</script>
当flush Callback
执行到this.message = 'wang.haoyu';
这个异步更新函数的时候,他就会更新DOM节点(而并非立即绘制页面),所以放在之后的nextTick
可以获取到上一步micro
对于message
的修改。请问老师可以这样理解吗
登录后可查看更多问答,登录/注册