美文网首页
vue中的this.$nextTick和Vue.nextTick

vue中的this.$nextTick和Vue.nextTick

作者: tenro | 来源:发表于2021-06-30 10:25 被阅读0次

    首先 this.$nextTick 其实就是Vue.nextTick, 因为this指向的就是Vue

    官方说法: 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。(似乎有点云里雾里)
    
    普及一下异步执行的运行机制如下:
    (1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
    (2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
    (3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
    (4)主线程不断重复上面的第三步。
    
    
    
    // 实例上挂载一个message数据
    vm.message = 'changed'
    
    // 想要立即使用更新后的DOM。这样不行,因为设置message后DOM还没有更新
    console.log(vm.$el.textContent) // 并不会得到'changed'
    
    //这样可以,nextTick里面的代码会在DOM更新后执行
    Vue.nextTick(function(){
      console.log(vm.$el.textContent) //可以得到'changed'
    })
    

    总结: 页面渲染是异步的,想要第一时间获取更新后真实的DOM,可以使用nextStick!

    相关文章

      网友评论

          本文标题:vue中的this.$nextTick和Vue.nextTick

          本文链接:https://www.haomeiwen.com/subject/cvalultx.html