Vue.nextTick(),vue的nextTick这个方法有什么用

  Vue.nextTick(),vue的nextTick这个方法有什么用

  这个。$nextTick是在下一个dom更新周期后执行一个延迟的回调,在修改数据后立即使用这个方法获取更新后的dom。下面的文章主要介绍了关于这个的理解和使用的相关信息。Vue中的$nextTick(),供大家参考。

  

目录

  这个。$nextTick()原则:1。Vue实现响应并不是指数据改变后DOM立即改变,而是按照一定的策略更新DOM。2.Vue官网3。等价转换,如果这个。$nextTick不起作用,尝试使用延迟4。这个的应用场景。$下一个滴答5。摘要

  

this.$nextTick()原理:

  Vue实现响应并不是指DOM在数据改变后立即改变,而是按照一定的策略更新DOM。Vue修改数据后,视图不会立即更新,但同一事件周期内所有数据修改完成后,视图会统一更新。首先,修改数据,这是一个同步任务。同一事件周期的所有同步任务都在主线程上执行,形成一个执行栈,此时不涉及DOM。然后Vue打开一个异步队列,缓冲在这个事件周期中发生的所有数据更改。如果同一个观察器被多次触发,它只会被推入队列一次。

  

1.Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。

  

2.Vue官网

  NextTick是下一个DOM更新周期后的延迟回调。如果在修改数据后立即使用$nextTick,就可以在回调中获得更新后的DOM。

  新Vue({

  //.

  方法:{

  //.

  示例:function () {

  //修改数据

  this.message=已更改

  //DOM尚未更新

  这个。$nextTick(function () {

  //DOM现在已更新

  //`this `绑定到当前实例

  this.doSomethingElse()

  })

  }

  }

  案例1:修改文本的值

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  标题文档/标题

  /头

  身体

  div id=应用程序

  span id= BTN { msg } }/span

  Button @click=updateText 修改文本/按钮的值

  /div

  /body

  脚本src=。/js/vue.js/script

  脚本

  var vm=new Vue({

  埃尔: #app ,

  数据:{

  味精:“你好,世界!”

  },

  方法:{

  updateText() {

  This.msg=修改文本的值

  console.log(this.msg)

  console . log(document . getelementbyid( BTN )。innerHTML);

  }

  }

  });

  /脚本

  /html

  打开控制台:

  可以看到,当我点击按钮时,msg数据会被更新作为响应,但是受msg影响的dom元素的文本值不会被更新。

  用nextTick()改进

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  标题文档/标题

  /头

  身体

  div id=应用程序

  span id= BTN { msg } }/span

  Button @click=updateText 修改文本/按钮的值

  /div

  /body

  脚本src=。/js/vue.js/script

  脚本

  var vm=new Vue({

  埃尔: #app ,

  数据:{

  味精:“你好,世界!”

  },

  方法:{

  updateText() {

  This.msg=修改文本的值

  console.log(this.msg)

  这个。$nextTick(()={

  console . log(document . getelementbyid( BTN )。innerHTML);

  });

  }

  }

  });

  /脚本

  /html

  打开控制台:

  可以看到,当我单击按钮时,msg数据将被更新作为响应,但受msg影响的dom元素的文本值也被更新。

  案例2:获取动态呈现的dom元素

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  标题文档/标题

  /头

  身体

  div id=应用程序

  你好,世界!/span

  Button @click=show 显示/button

  /div

  /body

  脚本src=。/js/vue.js/script

  脚本

  var vm=new Vue({

  埃尔: #app ,

  数据:{

  isShow: false

  },

  方法:{

  show() {

  this.isShow=true

  console . log(document . getelementbyid( BTN ))

  }

  }

  });

  /脚本

  /html

  打开控制台。

  可以看到,当我点击按钮时,iShow渲染的v-if的元素是成功的,但是iShow渲染的dom元素在函数中无法获取。

  用nextTick()改进

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  标题文档/标题

  /头

  身体

  div id=应用程序

  你好,世界!/span

  Button @click=show 显示/button

  /div

  /body

  脚本src=。/js/vue.js/script

  脚本

  var vm=new Vue({

  埃尔: #app ,

  数据:{

  isShow: false

  },

  方法:{

  show() {

  this.isShow=true

  这个。$nextTick(()={

  console . log(document . getelementbyid( BTN ))

  })

  }

  }

  });

  /脚本

  /html

  控制台操作:

  可以看到动态dom元素被成功获取。

  

3.等价转换,如果this.$nextTick不起作用时尝试用延时器

  这个。$nextTick(()={

  做点什么

  })

  胜任

  setTimeout(()={

  做点什么

  },0)

  

4.this.$nextTick的应用场景

  在nextTick()的回调函数中。已创建(),dom尚未呈现。如果此时将数据(或其他dom操作)赋给hook函数是徒劳的,那么这个。$nextTick()此时会被广泛使用,而mounted()对应的created()的hook函数只有在dom渲染完成后才会开始渲染数据,所以需要在mounted()中操作dom。

  

5.总结

  1.nextTick是下一个DOM更新周期结束后的延迟回调。如果在修改数据后立即使用$nextTick,就可以在回调中获得更新后的DOM。

  2.我的理解是,nextTick方法相当于页面渲染完成时调用nextTick方法,nextTick方法可以获取页面最新的dom元素。

  关于这个的理解和使用,这篇文章就到这里了。Vue中的$nextTick()。有关此的用法的更多信息。$ next tick()在Vue中,请搜索我们之前的文章或者继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: