添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
痴情的毛衣  ·  Xcode update policy - ...·  5 天前    · 
高大的上铺  ·  用 Cloudflare 和 Nginx ...·  2 周前    · 
阳刚的小狗  ·  湖南省耒阳市 ...·  1 月前    · 

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

异步更新队列

Vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。

如果同一个 watcher 被多次触发,只会被推入到队列中一次。

这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要。

然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。

Vue 在内部尝试对异步队列使用原生的 Promise.then 和 MessageChannel,如果执行环境不支持,会采用 setTimeout(fn, 0) 代替。

例如,当你设置 vm.someData = 'new value' ,该组件不会立即重新渲染。

当刷新队列时,组件会在事件循环队列清空时的下一个“tick”更新。

多数情况我们不需要关心这个过程,但是如果你想在 DOM 状态更新后做点什么,这就可能会有些棘手。

虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。

为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用 Vue.nextTick(callback)

export default{
  data(){
    userInfo:{
      name:'',
      age:''
  watch:{
    userInfo:{
      handler(v){
        //这样做.(Wocao,dom数据没变化???)
        this.$set(this.userInfo,'name','webfansplz');
        //正确做法.(Nice,dom数据更新!!!)
        this.$nextTick(()=>{
          this.$set(this.userInfo,'name','webfansplz');
      deep:true