1、定义:Dom更新之后执行的回调,vue.nextTick()是异步
<h1 ref="hello">{{ value }}</h1> <el-button type="danger" @click="get">点击</el-button>data () {
return { value: 'Hello World ~',
}
} methods: { get() { this.value = '你好啊'; this.$nextTick(() => { console.log('2'+ new Date() + this.$refs['hello'].innerText); }); console.log('1 '+ new Date() + this.$refs['hello'].innerText);
}}
输出顺序: 先输出1, hello World, 在输出2,你好啊
2、为什么要是用?
vue数据更改后(只是调用用了setter)不是立刻更新dom, 会将数据变化存在队列中,等待执行力getter之后才会更新dom
可参考: www.javashuo.com/article/p-r…
当更改完data之后, 如果要直接操作dom,dom中数据仍然是旧数据,如果想要操作更改完数据之后的dom, 就用vue.nextTick(function(){ dom操作})
3、使用场景
场景一:在created中进行dom操作,必须要放在vue.$nextTick()中
场景二:想要操作更改数据后的dom
场景三:滑动屏幕家在数据, 可使用
vue.nextTick(function(){
this.getList()
})