this.$nextTick 将回调延迟到下次DOM更新循环之后执行。在修改数据之后立即使用它,然后等待DOM更新。
this.$nextTick 跟全局方法 vue.nextTick 一样,不同的是,回调的 this 自动绑定到调用它的实例上。
总的来说,假设我们更改了某个 dom 元素内部的文本,而这时候我们想直接打印这个更改之后的文本是需要 dom 更新之后才会实现的,就像我们把将要打印输出的代码放在 setTimeout(fn, 0) 中
获得修改dom后的结果,就是修改的同时获得修改后的结果。
具体demo如下
<template>
<div>
<button ref='tar'
type="button"
name="button"
@click="testClick"
>{
{content}}</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
content: '初始值'
}
},
methods: {
testClick () {
this.content = '改变了'
console.log(this.$refs.tar.innerHTML); // 初始值
// let self=this; // 用了箭头函数,不用赋值
this.$nextTick(() => {
console.log(self.$refs.tar.innerHTML); // 改变了
})
},
}
}
</script>
<style scoped>
</style>
reference:
https://blog.csdn.net/a654540233/article/details/107245152/