vue2.0 开发一定用得着的

1、$nextTick: 用于延迟执行一段代码,当你需要操作dom时,将dom操作的js放在this.nextTick()的回调函数中。

// $refs

 this.$nextTick(() => {
     this.$refs['form'].resetFields()
})

2、watch 监听

watch: {
    currentCode(val, oldVal){//普通的watch监听-一般用于字符串、数值、布尔
       console.log("currentCode: "+val, oldVal);
    },  
    // 深度监听,可监听到对象、数组的变化
    formData: {
        // 即监听到变化时应该执行的函数。
      handler(val, oldVal) {
        console.log("formData: "+val.c, oldVal.c);
      },
      immediate: true, // 确认是否以当前的初始值执行handler的函数
      deep: true // 确认是否深入监听
    }
 
}

对于immediate和deep,我有以下理解:

immediate设为true后,则监听的这个对象会立即输出,也就是说一刷新页面就会在控制台输出,当然此时页面上的数据我们还没来得及手动让其发生变化,所以在控制台输出的newValue为我们在代码中默认设置的值,oldValue输出为“undefined”。
如果不设置immediate,或者将immediate设为false的话,则刷新页面后不会立即监听此对象,也就是控制台不会有输出,必须要监听的对象有值改变时控制台才会有输出。
需要监听复杂数据(对象)内部属性的变化时,设置deep属性。Vue会递归的侦听数据和属性的变化(性能消耗较大)。也就是给所有数据和属性添加handler执行函数。

总结:

watch监听只有在数据变化时才会执行监听函数。父组件向子组件动态传值时,子组件props首次获取到父组件传来的默认值时,此时也需要执行watch监听函数。则需设置immediate:true.

需要深度监听,设置deep:true

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值