Vue2.x computed与watch入门详解:如何高效运用watch实现数据监听?

2026-05-22 14:421阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计756个文字,预计阅读时间需要4分钟。

Vue2.x computed与watch入门详解:如何高效运用watch实现数据监听?

前言:watch命名思考,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见应用场景有监听路由变化、以及父组件向子组件传递props数据的变更等。基本使用,在使用watch的时候需要注意以下几点。

Vue2.x computed与watch入门详解:如何高效运用watch实现数据监听?

前言

watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等

基本使用

在使用watch的时候,需要在data中生命一个状态,并添加到watch当中进行观察,当发生变化时,watch可以通过默认参数获取最新的值的变化

<li>name值:{{ name }}</li> <li>{{ nameTip }}</li> <li>通过异步操作获取的age:{{ age }}</li> <li><button @click="getUser">修改名字</button></li> let p1 = new Promise((resolve, reject) => { resolve({ age: "14" }); }); data() { return { name: "zhangsan", nameTip: "name未改变", }; }, watch: { name(newVal, oldVal) { // watch可以监听一些状态发生更改的时候,做一些处理,修改状态,或者异步操作 this.nameTip = "name状态改变了"; this.getData(); }, }, methods: { getData() { setTimeout(() => { this.getAge(); }, 1000); }, getUser() { this.name = "lisi"; }, getAge() { p1.then((res) => { console.log(res); this.age = res.age; }); }, },

当点击修改的时候,name的值会被修改为lisi,watch监听到name的修改之后,可以修改nameTip的文字,进行出发修改别的状态,
我们也可以通过newVal获取name的最新的值,或者oldVal的值进行一些对比和操作

使用promise和定时器模拟当状态变化的时候,请求后台数据并渲染,这是我们在开发过程中,对watch使用的一个比较典型的例子


immediate和deep

immediate:当watch第一次加载或者首次绑定的时候,需要监听和获取data中的状态,那么就可以使用immediate,设置为true,该属性值为布尔值

deep:watch监听的值为对象的时候,可以使用该属性进行监听对象深层次的属性变化,

注意事项:

deep默认是false,使用的时候,需要自行添加deep:true ,deep和immediate的值一样,是布尔值

实例

<li>{{ immediateNameTip }}</li> data() { return { immediateName: "immediateName原始值", immediateNameTip: "immediateName改变时的提示文字", }; }, immediateName: { handler(newVal, oldVal) { console.log("immediate表示最初监听值得时候,也执行这段代码"); setTimeout(() => { this.immediateNameTip = "immediateName添加immediate,初次绑定也会执行"; }, 2000); }, immediate: true, deep: true, // 只针对对象的深层次属性变化 },

当设置了immediate为true的时候,首次进来immediateNameTip在定时器执行之后,就会发生更改。
deep这里不再举例子,大家可以自己在实战中去使用和学习。


使用建议

watch可以作为监听路由变化,以及通过异步的方式去获取数据,同时在一些开销比较大的状态监听都有较多的应用场景,还有购物车功能的实现等场景。

关于vue和watch的区别,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新

  • 码云 gitee.com/lewyon/vue-note
  • githup github.com/akari16/vue-note

文章个人博客地址:vue2.x版本中computed和watch的使用入门详解-watch篇

欢迎关注公众号:程序员布欧,不定期更新一些前端入门文章

创作不易,转载请注明出处和作者。

本文共计756个文字,预计阅读时间需要4分钟。

Vue2.x computed与watch入门详解:如何高效运用watch实现数据监听?

前言:watch命名思考,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见应用场景有监听路由变化、以及父组件向子组件传递props数据的变更等。基本使用,在使用watch的时候需要注意以下几点。

Vue2.x computed与watch入门详解:如何高效运用watch实现数据监听?

前言

watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等

基本使用

在使用watch的时候,需要在data中生命一个状态,并添加到watch当中进行观察,当发生变化时,watch可以通过默认参数获取最新的值的变化

<li>name值:{{ name }}</li> <li>{{ nameTip }}</li> <li>通过异步操作获取的age:{{ age }}</li> <li><button @click="getUser">修改名字</button></li> let p1 = new Promise((resolve, reject) => { resolve({ age: "14" }); }); data() { return { name: "zhangsan", nameTip: "name未改变", }; }, watch: { name(newVal, oldVal) { // watch可以监听一些状态发生更改的时候,做一些处理,修改状态,或者异步操作 this.nameTip = "name状态改变了"; this.getData(); }, }, methods: { getData() { setTimeout(() => { this.getAge(); }, 1000); }, getUser() { this.name = "lisi"; }, getAge() { p1.then((res) => { console.log(res); this.age = res.age; }); }, },

当点击修改的时候,name的值会被修改为lisi,watch监听到name的修改之后,可以修改nameTip的文字,进行出发修改别的状态,
我们也可以通过newVal获取name的最新的值,或者oldVal的值进行一些对比和操作

使用promise和定时器模拟当状态变化的时候,请求后台数据并渲染,这是我们在开发过程中,对watch使用的一个比较典型的例子


immediate和deep

immediate:当watch第一次加载或者首次绑定的时候,需要监听和获取data中的状态,那么就可以使用immediate,设置为true,该属性值为布尔值

deep:watch监听的值为对象的时候,可以使用该属性进行监听对象深层次的属性变化,

注意事项:

deep默认是false,使用的时候,需要自行添加deep:true ,deep和immediate的值一样,是布尔值

实例

<li>{{ immediateNameTip }}</li> data() { return { immediateName: "immediateName原始值", immediateNameTip: "immediateName改变时的提示文字", }; }, immediateName: { handler(newVal, oldVal) { console.log("immediate表示最初监听值得时候,也执行这段代码"); setTimeout(() => { this.immediateNameTip = "immediateName添加immediate,初次绑定也会执行"; }, 2000); }, immediate: true, deep: true, // 只针对对象的深层次属性变化 },

当设置了immediate为true的时候,首次进来immediateNameTip在定时器执行之后,就会发生更改。
deep这里不再举例子,大家可以自己在实战中去使用和学习。


使用建议

watch可以作为监听路由变化,以及通过异步的方式去获取数据,同时在一些开销比较大的状态监听都有较多的应用场景,还有购物车功能的实现等场景。

关于vue和watch的区别,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新

  • 码云 gitee.com/lewyon/vue-note
  • githup github.com/akari16/vue-note

文章个人博客地址:vue2.x版本中computed和watch的使用入门详解-watch篇

欢迎关注公众号:程序员布欧,不定期更新一些前端入门文章

创作不易,转载请注明出处和作者。