Vue监听属性(watch)
- 开源代码
- 2025-08-23 16:27:02

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 监听属性(watch)
目录
监听属性
监听值改变
使用watch实现
区别
总结
监听属性
通过watch来响应数据的变化。
虽然大多数情况计算属性都可以满足需要,但有时还是需要使用侦听器。当需要在数据发生变化时执行异步操作或者开销较大的操作时,就需要自定义监听器。
监听值改变还是使用过滤应用的示例来做演示。
先绑定一个input事件。
示例如下:
<div id="box"> <input type="text" @input="handleInput" v-model="mytext"> <ul> <li v-for="item in datalist" :key="item"> {{item}} </li> </ul> </div>同步情况下 使用计算属性可以完成
但是异步情况下,如果请求后端需要使用method方法。
示例如下:
<script> let vm = new Vue({ el:'#box', data: { mytext:'', datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], originList:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], }, methods:{ handleInput() { console.log("input", this.mytext) // 模拟异步情况 使用2秒后响应 setTimeout(() => { this.datalist = this.originList.filter(item => item.includes(this.mytext)) }, 2000) } } }) </script> 使用watch实现去掉input上的input事件,然后增加watch。
示例如下:
<script> let vm = new Vue({ el:'#box', data: { mytext:'', datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], originList:['aa', 'bb', 'cc', 'dd', 'ee', 'de'], }, watch: { mytext(newVal) { console.log("改变了", newVal) // 模拟异步情况 使用2秒后响应 setTimeout(() => { this.datalist = this.originList.filter(item => item.includes(this.mytext)) }, 2000) } } }) </script> 区别1.data => 状态,被拦截
2.方法 ==》 事件绑定,逻辑计算。可以不用return,没有缓存
3.计算属性(重视结果)=》 解决模版过重问题,必须有return,只求结果,有缓存,同步。
4.watch(重视过程),监听一个值的改变。不用返回值,异步同步。
总结Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 监听属性(watch)
Vue监听属性(watch)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Vue监听属性(watch)”