理解 $nextTick 的作用,解决在不支持es6语法的项目中,解决方案

可以先看下 深入响应式原理 - vue.js 这个官方文档,如果看不懂再来看这些博客。

Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。
$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM,API 文档中官方示例如下:

new Vue({
  // ...
  methods: {
    // ...
    example: function () {
      // modify data
      this.message = 'changed'
      // DOM is not updated yet
      this.$nextTick(function () {
        // DOM is now updated
        // `this` is bound to the current instance
        this.doSomethingElse()
      })
    }
  }
})

比如当改变msg1中的值时,就会执行回调,获取更改之后的值。
new Vue({
  el: '.app',
  data: {
    msg1: '',
  },

watch: {
//不能用es6语法就用这个方法
   msg1:function(){
        this.$nextTick(function () {
            console.log(this.msg1);
        });
    },
//这是es6语法箭头函数,在没有引入es6语法的项目中就不可以使用。
this.$nextTick(() => {
    this.msg2 = this.$refs.msgDiv.innerHTML
})
    },
},
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值