zoukankan      html  css  js  c++  java
  • this.$nextTick() 的一些理解

     参考 :https://blog.csdn.net/zhouzuoluo/article/details/84752280

        要使用this.$nextTick() 首先要明白这个东西是干什么的;

        vue官方的解释是:   在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

        我的理解是,  当我们对数据进行了修改后, 需要立刻用到修改后的DOM,这时候就需要用到 this.$nextTick()这个方法了。  这个方法就是vue的一个特殊钩子函数,它会在修改数据后,DOM挂载完成,才会执行this.$nextTick()。

        为什么要用这个方法?   通过下面的例子可以看出,当我们修改数据后,如果立即从dom中获取修改数据的值, 获取到的是旧的值,不是最新修改的值。出现不能及时从DOM中获取修改后数据值的原因是    Vue是异步执行dom更新的

       

       举个例子:

     如上图:  

    我们点击按钮, 对  testMsg的属性值 进行修改,  然后立即输出dom中testMsg中的值, 发现还是输出 “”“原始值” (原因是vue的dom更新是异步的。。。)

    $nextTick -------------在数据修改后,成功挂载dom,再去执行这个函数中的内容( 有点像vue的生命周期钩子函数)

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="./vue2.js"></script>
      </head>
      <body>
        <div id="app">
          <h1 id="myh">{{msg}}</h1>
          <button @click="change">点击</button>
        </div>
        <script>
          var vm = new Vue({
            el: '#app',
            data: {
              msg: 'hello'
            },
            methods: {
              change() {
    
                this.msg = 'itcast'
                // console.log(document.getElementById('myh').innerText); // 如果直接这样打印,打印出来的结果不是我们想要的itcast,而是hello,因为this.msg = ‘itcast’ 它是异步的
                // this.$nextTick()的作用是,等你页面上的刷新完之后,我再执行回调函数中的方法
                this.$nextTick(() => {
                  console.log(document.getElementById('myh').innerText)
                })
              }
            }
          })
        </script>
      </body>
    </html>
  • 相关阅读:
    python 格式化 json输出
    python
    回顾2013
    C扩展Python
    C扩展Python
    Python
    Python interview preparing
    Python用smtplib发送邮件
    Python 安装路径, dist-packages 和 site-packages 区别
    nginx worker_cpu_affinity使用方法
  • 原文地址:https://www.cnblogs.com/javascript9527/p/12303384.html
Copyright © 2011-2022 走看看