首页 > web前端 > Vue.js > 正文

vue watch用法是什么

coldplay.xixi
发布: 2020-11-17 15:31:32
原创
2584 人浏览过

vue watch用法是:1、当fullName值变化时,watch监听到并且执行;2、watch执行handler方法和immediate属性;3、使用deep属性,深度监听,常用语对象下面属性的改变。

vue watch用法是什么

【相关文章推荐:vue.js

vue watch用法是:

1、基本用法:

  当fullName值变化时,watch监听到并且执行

<div>
      <p>FullName: {{fullName}}</p>
      <p>FirstName: <input type="text" v-model="firstName"></p>
</div>
 
new Vue({
  el: &#39;#root&#39;,
  data: {
    firstName: &#39;Dawei&#39;,
    lastName: &#39;Lou&#39;,
    fullName: &#39;&#39;
  },
  watch: {
    firstName(newName, oldName) {
      this.fullName = newName + &#39; &#39; + this.lastName;
    }
  } 
})
登录后复制

2、handler方法和immediate属性

上面的例子是值变化时候,watch才执行,我们想让值最初时候watch就执行就用到了handlerimmediate属性

watch: {
  firstName: {
    handler(newName, oldName) {
      this.fullName = newName + &#39; &#39; + this.lastName;
    },
    // 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法,如果设置了false,那么效果和上边例子一样
    immediate: true
  }
}
登录后复制

3、deep属性(深度监听,常用语对象下面属性的改变)

<div>
      <p>obj.a: {{obj.a}}</p>
      <p>obj.a: <input type="text" v-model="obj.a"></p>
</div>
 
new Vue({
  el: &#39;#root&#39;,
  data: {
    obj: {
      a: 123
    }
  },
  watch: {
    obj: {
      handler(newName, oldName) {
         console.log(&#39;obj.a changed&#39;);
      },
      immediate: true
    }
  } 
})
登录后复制

我们在在输入框中输入数据视图改变obj.a的值时,我们发现是无效的。受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。

默认情况下 handler 只监听obj这个属性它的引用的变化,我们只有给obj赋值的时候它才会监听到,比如我们在 mounted事件钩子函数中对obj进行重新赋值:

mounted: {
  this.obj = {
    a: &#39;456&#39;
  }
}
登录后复制

那么我们需要监听obj里的属性a的值呢?这时候deep属性就派上用场了:

watch: {
  obj: {
    handler(newName, oldName) {
      console.log(&#39;obj.a changed&#39;);
    },
    immediate: true,
    deep: true
  }
}
登录后复制

这样的方法对性能影响很大,修改obj里面任何一个属性都会触发这个监听器里的 handler。我们可以做如下处理:

watch: {
  &#39;obj.a&#39;: {
    handler(newName, oldName) {
      console.log(&#39;obj.a changed&#39;);
    },
    immediate: true,
    // deep: true
  }
}
登录后复制

  watch的注销这里就不在多说了,实际开发中,watch会随着组件一并销毁。

相关免费学习推荐:javascript(视频)

以上是vue watch用法是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
vue
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!