您当前的位置: 首页 > 

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

vue2.x中watch的使用、监听、immediate、deep、handler

发布时间:2022-05-17 19:42:28 ,浏览量:0

目录
  • 1、HTML部分
  • 2、JavaScript部分
    • 2.1、公共部分
    • 2.2、单一值监听
    • 2.3、对象属性监听
    • 2.4、纯数组监听
    • 2.5、数组对象监听
1、HTML部分
<p>单一值:{{ showVal }}{ objShowVal }}{ cArrayShowVal }}{ arrayObjShowVal }} data() { return { val: "", showVal: "", obj: {bc: ""}, objShowVal: "", cArray: [], cArrayShowVal: "", arrayObj: [{bc: ""}], arrayObjShowVal: "", }; }, }; 
2.2、单一值监听

写法一:使用简单函数的方式,无法实现深度监听

watch: { val(val) { this.showVal = val; console.log("val:", val); console.log("showVal:", this.showVal); }, }, 

写法二:使用handler函数和deep: true属性实现深度监听和首次加载执行

watch: { val: { handler(val) { this.showVal = val; console.log("val:", val); console.log("showVal:", this.showVal); }, // 首次加载执行 // 如果不写或者值为false那么首次加载不会执行 immediate: true, // 深度监听 // 此参数可以深度监听对象属性 // 不过监听对象属性还有其他方法 deep: true, }, }, 
2.3、对象属性监听

写法一:直接使用普通函数监听对象属性

watch: { "obj.bc"(val) { this.objShowVal = val; console.log("val:", val); console.log("objShowVal:", this.objShowVal); }, }, 

写法二:使用handler函数监听对象属性

watch: { "obj.bc": { handler(val) { this.objShowVal = val; console.log("val:", val); console.log("objShowVal:", this.objShowVal); }, deep: true, immediate: true }, }, 
2.4、纯数组监听
watch: { cArray(val) { this.cArrayShowVal = val[0]; console.log("val:", val); console.log("cArrayShowVal:", this.cArrayShowVal); }, }, 
2.5、数组对象监听

报错,未找到解决方案。但是可以在改变数据的地方使用this.$forceUpdate()解决。

watch: { arrayObj: { hanler(val) { this.arrayObjShowVal = val[0].bc; console.log("val:", val); console.log("arrayObjShowVal:", this.arrayObjShowVal); }, deep: true, }, }, 
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3650s