怀抱观古今,寝食展戏谑。这篇文章主要讲述vue2.x版本中computed和watch的使用入门详解-watch篇相关的知识,希望能为你提供帮助。
前言
基本使用
在使用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监听的值为对象的时候,可以使用该属性进行监听对象深层次的属性变化,
注意事项:实例
<
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这里不再举例子,大家可以自己在实战中去使用和学习。
使用建议
关于vue和watch的区别,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新
- 码云 https://gitee.com/lewyon/vue-note
- githup https://github.com/akari16/vue-note
欢迎关注公众号:程序猿布欧,不定期更新一些前端入门文章
【vue2.x版本中computed和watch的使用入门详解-watch篇】创作不易,转载请注明出处和作者。
推荐阅读
- [OpenCV实战]32 使用OpenCV进行非真实感渲染
- 搭建组件库最小原型(支线)
- Redis lua环境
- [ 链表OJ题--C语言实现 ] 复制带随机指针的链表(带视频讲解哦)
- kettle庖丁解牛第32篇之本地和上游数据量比较后再抽取
- 路由基础之OSPFRouterID及DR和BDR的选举
- NAT网络地址转换
- 基础网络配置
- Docker下的Spring Cloud三部曲之二(细说Spring Cloud开发)