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>
  • 相关阅读:
    【MSSQL】MSSQL还原单mdf文件报1813错误
    【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
    【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令
    【Other】U盘FAT32转NTFS且无数据丢失
    python map()
    python关于分割与拼接的那些事
    python shutil.copy()用法
    python enumerate用法
    工作中遇到一些难题1_5
    廖雪峰读书笔记_文件读写总结_2016_12_23
  • 原文地址:https://www.cnblogs.com/javascript9527/p/12303384.html
Copyright © 2011-2022 走看看