个人电脑做网站服务器教程,微信官方网站登陆,软文模板,wordpress无法登陆this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它#xff0c;然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样#xff0c;不同的是回调的 this 自动绑定到调用它的实例上。
假设我们更改了某个dom元素内部的文本#xff0c;而这时候我…this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样不同的是回调的 this 自动绑定到调用它的实例上。
假设我们更改了某个dom元素内部的文本而这时候我们想直接打印出这个被改变后的文本是需要dom更新之后才会实现的也就好比我们将打印输出的代码放在setTimeout(fn, 0)中
先来第一个例子看一看
templatesectiondiv refhelloh1Hello World ~/h1/divel-button typedanger clickget点击/el-button/section
/template
scriptexport default {methods: {get() {}},mounted() {console.log(333);console.log(this.$refs[hello]);this.$nextTick(() {console.log(444);console.log(this.$refs[hello]);});},created() {console.log(111);console.log(this.$refs[hello]);this.$nextTick(() {console.log(222);console.log(this.$refs[hello]);});}}
/script 可以根据打印的顺序看到在created()钩子函数执行的时候DOM 其实并未进行任何渲染而此时进行DOM操作并无作用而在created()里使用this.$nextTick()可以等待dom生成以后再来获取dom对象
然后来看第二个例子
templatesectionh1 refhello{{ value }}/h1el-button typedanger clickget点击/el-button/section
/template
scriptexport default {data() {return {value: Hello World ~};},methods: {get() {this.value 你好啊;console.log(this.$refs[hello].innerText);this.$nextTick(() {console.log(this.$refs[hello].innerText);});}},mounted() {},created() {}}
/script
根据上面的例子可以看出在方法里直接打印的话 由于dom元素还没有更新 因此打印出来的还是未改变之前的值而通过this.$nextTick()获取到的值为dom更新之后的值
this.$nextTick()在页面交互尤其是从后台获取数据后重新生成dom对象之后的操作有很大的优势