文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么在vue中使用 Watch和Computed

2023-06-15 04:28

关注

本篇文章给大家分享的是有关怎么在vue中使用 Watch和Computed,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

01. 监听器watch

(1)作用

export default {    data() {        return {            number: 1        }    },    watch:{        // 普通监听方法,这里表示监听data中的 number属性        // 第一个参数表示改变后的新值,第二个参数表示改变前的旧值        number(newVal,oldVal){            console.log(newVal);            console.log(oldVal);        }    }}

(2)属性和方法

export default {    data(){        return {            number: 1        }    },    watch: {        // 监听 number属性        number: {handler(newVal, oldVal){                            },            immediate: true, // 立即监听        }    }}

(3)监听对象

export default {    data() {        return {            obj: {                a: 1            }        }    },    watch: {        obj: {            handler(newVal){                console.log('监听到了', newVal)            },            immediate: true        }    },    created(){        // 无法监听到,因为是对属性进行的修改操作        // 打印一次,且打印结果为修改后的值,        this.obj.a = 2         // 可以监听到,因为是直接对 对象进行的 赋值操作        // 打印两次(immediate立即监听会打印一次,修改时打印一次)        this.obj = { a: 2}     }}

由于 Vue 会在初始化实例时,会对属性执行 getter/setter 转化过程

所以属性必须在 data 对象上存在,才能让 Vue 转换它,这样才能让它是响应式的

因此,Vue 无法检测到对象属性的添加、删除、修改等操作

默认情况下 handler 只监听对象内部属性的引用的变化

因此,我们只有进行赋值操作的时候,它才会监听到

export default {    watch: {        'obj.a': {            handler(newVal){                console.log(newVal)            }        }    },    created(){        // 以下两个都可以监听到 打印两次        this.obj.a = 2        this.obj = { a:2 }    }}

这是因为,this.$set()就是相当于在data中对初始值进行改变

它可以触发监听,但变化体现不出来,即newVal === oldVal

export default {    watch: {        obj: {            handler(newVal){            console.log(newVal)            },            deep: true,            immediate: true        }    },    created(){        // 进行深度监听后,直接修改属性的变化也可以监听到        // 打印两次(因为immediate)        this.obj.a = 2                // 无法监听到 对象属性的增加        // 打印一次,且打印结果为添加了新增属性的对象        // 即,它只会 因immediate而执行一次 ,且打印输出 {a:1,b:2}        this.obj.b = 2                // 可以触发监听,但无法监听到变化        // 打印两次,两次值都是{a:2},不能体现变化        this.$set(this.obj, 'a', 2)    }}

(4)监听数组

数组方法如pop()、push()等,和this.$set(arr, index, newVal)方法

它们可以触发监听,但无法体现变化,即newVal === oldVal

export default {    data() {        return {            arr: [1]        }    },    watch: {        arr: {            handler(newVal, oldVal) {                console.log('新:', newVal)                console.log('旧:', oldVal)            },            immediate: true        }    },    created() {        // 可以监听到---直接整个数组赋值        this.arr = [2]                // 无法监听到---索引赋值、长度修改        this.arr[1] = 2        this.arr[0] = 2        this.arr.length = 2                // 可以触发监听,但无法监听到变化 => 即新、旧值都是一样的        this.arr.push(2)        this.$set(this.arr, 0, 2)    }}

02. 计算属性computed

(1)计算属性的set方法

computed: {  fullName: {    get () {      return `${this.firstName} ${this.lastName}`;    },    set (val) {      const names = val.split(' ');      this.firstName = names[0];      this.lastName = names[names.length - 1];    }  }}

当执行 this.fullName = 'Aresn Liang',computed 的 set 就会调用,firstName 和 lastName 就会被赋值为 Aresn 和 Liang

computed 可以依赖其它 computed,甚至是其它组件的 data

(2)区别

(3)使用场景

vue是什么

Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

以上就是怎么在vue中使用 Watch和Computed,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯