Vue中watch的详细用法

运用场景

当项目中某个值发生变化时,想执行对应的方法或者时刻获取最新的值,此时就需要用到watch方法

常规用法

当值发生变化直接执行定义在methods中的方法,这种写法,只有当值value发生变化时,才会执行方法,第一次默认绑定值时不会执行changeValue函数;

data(){

return{

value:''

}

}

  watch:{

      value:'changeValue'

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }

data(){

return{

value:''

}

}

  watch:{

      value:'changeValue'

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }

2.使用immediate和handler方法,如果不写immediate属性,则跟第一种写法一样,value绑定默认值第一次不会执行,当加上immediate=true时,此时watch对value的默认值也进行了监听,在初始绑定值时也执行下面的方法

data(){

return{

value:''

}

}

  watch:{

      'value':{

      immediate: true,

handler(newValue,oldValue){

this.changeValue();

}

}

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }

data(){

return{

value:''

}

}

  watch:{

      'value':{

      immediate: true,

handler(newValue,oldValue){

this.changeValue();

}

}

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }

3.深度监听,有时候会遇到当value是个对象时,有多层数据结构,当下面层级的属性发生变化时,普通写法watch是监听不到变化,这时需要加上deep属性;

data(){

return{

value:''

}

}

  watch:{

      'value':{

      immediate: true,

      deep: true,

  handler(newValue,oldValue){

this.changeValue();

  }

}

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }

data(){

return{

value:''

}

}

  watch:{

      'value':{

      immediate: true,

      deep: true,

  handler(newValue,oldValue){

this.changeValue();

  }

}

    },

  methods:{

    changeValue(){

      console.log('当value值发生变化时执行这个方法')

    }

  }


watch不仅仅只监听页面内定义的值的变化,还能监听props、vuex中状态值的变化。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容