iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在vue中使用 Watch和Computed
  • 398
分享到

怎么在vue中使用 Watch和Computed

2023-06-15 04:06:02 398人浏览 八月长安
摘要

本篇文章给大家分享的是有关怎么在Vue中使用 Watch和Computed,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。01. 监听器watch(1)作用watch:用于监听d

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

01. 监听器watch

(1)作用

  • watch:用于监听data中的数据变化,只在被监听的属性值发生变化时执行

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

(2)属性和方法

  • immediate:表示在组件创建后,立即监听属性,在最初绑定值的时候,设置为:immediate: true

  • handler:监听对象的时候使用,发生变化时,执行handler中的方法~

  • deep:表示深度监听对象、数组内部的属性的变化,设置为:deep: true

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 }    }}
  • 可以使用deep属性进行深度监听

    • 只能监听原有属性的变化,不能监听新增属性

    • vue 无法监听 this.$set 修改原有属性的变化

这是因为,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)监听数组

  • 可以监听

    • 数组的直接赋值操作

    • 通过数组方法的添加、修改、删除操作

    • 通过this.$set()方法进行的数组操作

数组方法如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方法

  • 计算属性可以写为一个 Object,而非 Function,只是 Function 形式是我们默认使用它的 get 方法,当写为 Object 时,我们还可以使用它的 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)区别

  • 计算属性和监听器

    • 只要属性值发生变化,都可以触发一个回调函数

    • 监听器可以响应异步操作中数据的变化

    • 自动触发

    • 只要依赖值不变,都会直接读取缓存进行复用

    • 计算属性不能响应异步操作中数据的变化

    • 需要人为调用

    • 计算属性computed是:监听依赖值的变化

    • 监听器watch是:监听属性值的变化

  • 计算属性和方法

    • methods 是一个方法,它可以接受参数,而 computed 不能

    • computed 是可以缓存的,methods 不会

(3)使用场景

  • 当一个属性受多个属性影响的时候就需要用到computed

  • 当一条数据影响多条数据的时候就需要用watch,如搜索数据

vue是什么

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

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

--结束END--

本文标题: 怎么在vue中使用 Watch和Computed

本文链接: https://www.lsjlt.com/news/277428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在vue中使用 Watch和Computed
    本篇文章给大家分享的是有关怎么在vue中使用 Watch和Computed,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。01. 监听器watch(1)作用watch:用于监听d...
    99+
    2023-06-15
  • Vue computed与watch怎么使用
    这篇文章主要讲解了“Vue computed与watch怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue computed与watch怎么使用”吧!compu...
    99+
    2023-07-05
  • Vue中的Computed与watch怎么用
    这篇“Vue中的Computed与watch怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的Computed与...
    99+
    2023-06-30
  • vue3中的watch和computed怎么使用
    2.监听 ref 数据2.1监听一个 ref 数据<template> <p>{{ age }}</p> <button @click="age++">click&...
    99+
    2023-05-21
    Vue3 watch computed
  • vue Watch和Computed的使用总结
    目录01. 监听器watch (1)作用 (2)属性和方法 (3)监听对象 (4)监听数组 02. 计算属性computed (1)计算属性的set方法 (2)区别 (3)使用场景 ...
    99+
    2022-11-12
  • Vue中的watch、watch和computed的区别是什么
    本文小编为大家详细介绍“Vue中的watch、watch和computed的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中的watch、watch和computed的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-02
  • Vue中Computed和Watch的作用是什么
    本篇文章给大家分享的是有关Vue中Computed和Watch的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 Vue中的...
    99+
    2022-10-19
  • Vue3的Watch和computed怎么使用
    本篇内容介绍了“Vue3的Watch和computed怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • vue中computed 和 watch有什么区别
    vue中computed 和 watch有什么区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、computed 和 wa...
    99+
    2022-10-19
  • vue2.x版computed和watch怎么使用
    今天小编给大家分享一下vue2.x版computed和watch怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基础使...
    99+
    2023-07-02
  • vue2.x版本中computed和watch怎么使用
    这篇文章主要介绍了vue2.x版本中computed和watch怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue2.x版本中computed和watch怎么使用文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-02
  • Vue中的watch是什么以及watch和computed的区别
    目录一、watch是什么?二、应用基本用法三、Watch和computed的区别computed和watch的综合运用实例需求:实现代码(helloworld.vue实现代码)一、w...
    99+
    2022-11-13
  • Vue中的computed和watch用法及区别
    目录vue computed 是如何实现的computed demovue的watch是如何实现的watch demovue computed 是如何实现的 Vue 的 comput...
    99+
    2023-05-17
    Vue computed和watch Vue computed Vue watch
  • Vue3中的computed,watch,watchEffect怎么使用
    这篇“Vue3中的computed,watch,watchEffect怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-07-06
  • vue中computed和watch的使用实例代码解析
    需求: 1.点击按钮实现天气的切换;2.用watch进行监视天气产生变化的数据; 实现代码(helloworld.vue实现代码): <template> <...
    99+
    2022-11-13
  • Vue中的computed和watch的区别是什么
    Vue中的computed和watch的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面带大家认识Vue中的computed 和 watch,介绍一下compu...
    99+
    2023-06-22
  • vue中computed和watch的区别和运用场景
    这篇文章主要为大家展示了“vue中computed和watch的区别和运用场景”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中computed和watch...
    99+
    2022-10-19
  • vue前端重构computed及watch组件通信怎么使用
    这篇文章主要介绍“vue前端重构computed及watch组件通信怎么使用”,在日常操作中,相信很多人在vue前端重构computed及watch组件通信怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-30
  • Vue中watch怎么使用
    这篇文章主要介绍了Vue中watch怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中watch怎么使用文章都会有所收获,下面我们一起来看看吧。一、API介绍watch(WatcherSource,...
    99+
    2023-07-04
  • Vue中的computed函数怎么使用
    这篇“Vue中的computed函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的computed函数怎么...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作