vue中nextTick的使用

126 阅读1分钟

它主要是处理我们在变更完数据以后,无法立刻拿到最新的DOM节点对象的问题

<template>
  <div class="hello">
    <h1 ref="getnext">{{csjg}}</h1>
    <button @click="getBtn">改变值</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      csjg:'测试结果222'
    };
  },
  methods: {
    getBtn() {
     this.csjg='nexttick的结果值'
      console.log(this.$refs.getnext.innerHTML);
    },
  },
};
</script>

在这个组件中,name属性绑定了名为“getnext”的ref引用,这样我们就可以对该DOM节点进行操作。我们在changeName方法中,做了两件事情:首先我们改变了name属性的值,然后我们使用vue的this.$refs方法拿到了真实的dom节点,并打印了dom节点的内容,控制台打印的内容如下:

   测试结果222
   

很显然这不是我们想要的数据,因为我们改变了组件属性中的name属性,这时候打印的名称应该是'nexttick的结果值'才对。 我们来用this.$nextTick()方法来改写这个组件:

        getBtn(){
              this.csjg='nexttick的结果值'
              this.$nextTick(()=>{
              console.log(this.$refs.getnext.innerHTML)
          })
        }

控制台打印的内容如下:

nexttick的结果值

这就是this.$nextTick()的作用,帮助我们在改变组件中属性以后,立刻拿到渲染以后的dom节点对象