vue2.x版本中computed和watch的使用入门详解-watch篇

Posted 程序员布欧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的笔记也会继续更新

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

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

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

以上是关于vue2.x版本中computed和watch的使用入门详解-watch篇的主要内容,如果未能解决你的问题,请参考以下文章

vue 中的computed 和 watch 监听

25、watch 和computed区别 以及computed的缓存

vue3中的computed和watch

vue2 中 computed 和 watch 的异同

Vue中watch和computed的区别和应用场景

Vue中computed和watch的区别