网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > Vue

vue中nextTick如何正确使用?

2023/6/1 20:52:46

学习Vue的过程中,大家肯定都使用过nextTick(),关于nextTick()的使用时机,大家肯定都知道,那么它的工作原理是怎样的呢,本文就简单说一下它的nextTick()的工作原理。 nextTick内部其实就是根据这种机制来运行的。我们都知道nextTick是让浏览器在页面渲染后在执…

        学习Vue的过程中,大家肯定都使用过nextTick(),关于nextTick()的使用时机,大家肯定都知道,那么它的工作原理是怎样的呢,本文就简单说一下它的nextTick()的工作原理。

        nextTick内部其实就是根据这种机制来运行的。我们都知道nextTick是让浏览器在页面渲染后在执行其中的回调。那这是为什么呢?

        还记得我上一篇文章讲的Vue官网里说“Vue在更新Dom时是异步执行的”,说明vue去渲染页面也是通过一个异步任务,那么它也会被推入一个异步任务队列里面,而nextTick内部就是把自己写那个回调也做成一个异步任务(微任务或宏任务),然后把他放在vue更新dom这个异步任务后面,通常是放在一个事件循环的最后执行,所以nextTick就具有了在更新dom后操作页面的能力。


nextTick的使用时机

        首先记住:nextTick所指定的回调会在浏览器更新DOM完毕之后再执行。

        举个例子:

        在我自己做的一个单页面应用中,我有一个需求,当从后端请求回数据后,马上就对页面进行更新。比如,我要点击操作里的删除操作,前端删除数据后就向后端发请求,后端删除数据后返回数据,如果我们想马上显示到页面上,应该怎么做呢?

        可能好多人会像我第一次做那样,比如我这个页面是用 v-for 遍历data这个数据显示出来的,可能好多人就会直接把前端返回的数据直接重新赋值给data。但是这样是绝对不行的!这样只会导致数据其实是变了,但是视图是不会变的,因为vue更新dom是异步的,无法通过同步代码赋值后马上去更新页面。所以即使删除成功了页面也不会显示出来。即使显示删除成功,页面也不会更新。

image.png


        通过以上内容我们知道了vue 中nextTick的正确使用方法。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!


相关资讯

  • vue兄弟平级组件如何传递参数值?

    vue组件传值不外乎三种,父传子、子传父、平级,今天我们就来着重说说vue平级组件如何传递参数值? 假设你有两个Vue组件需要通信: A 和 B ,A组件按钮上面绑定了点击事件,发送一则消息,B组件接收。初始化,全局创建$bus 直接在项目中的 main.js 初始化 …

    2023/1/7 13:08:32