美文网首页
vue异步更新队列:$nextTick()【update 完成后

vue异步更新队列:$nextTick()【update 完成后

作者: meng_281e | 来源:发表于2020-01-18 09:35 被阅读0次

官网:https://cn.vuejs.org/v2/guide/reactivity.html#异步更新队列 "异步更新队列"

异步更新队列

Vue 在更新 DOM 时是异步执行的。
在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 Vue.nextTick(callback)。
这样回调函数将在 DOM 更新完成后被调用。

【update Dom完成后被调用】

例子:

在组件内使用 vm.$nextTick() 实例方法特别方便,因为它不需要全局 Vue,并且回调函数中的 this 将自动绑定到当前的 Vue 实例上:

Vue.component('example', {
  template: '<span>{{ message }}</span>',
  data: function () {
    return {
      message: '未更新'
    }
  },
  methods: {
    updateMessage: function () {
      this.message = '已更新'
      console.log(this.$el.textContent) // => '未更新'
      this.$nextTick(function () {
        console.log(this.$el.textContent) // => '已更新'
      })
    }
  }
})

因为 $nextTick() 返回一个 Promise 对象,所以你可以使用新的 ES2017 async/await 语法完成相同的事情:

methods: {
  updateMessage: async function () {
    this.message = '已更新'
    console.log(this.$el.textContent) // => '未更新'
    await this.$nextTick()
    console.log(this.$el.textContent) // => '已更新'
  }
}

相关文章

网友评论

      本文标题:vue异步更新队列:$nextTick()【update 完成后

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