详细聊聊Vue中设计的computed和watch

2023-10-27

一、定义

它们都提供了一种在响应式数据变化时执行响应操作的机制。

computed:计算属性,是基于其他数据进行计算得到的,依赖于其他数据,只有当依赖的数据发生变化时,计算属性才会自动更新,并当作普通属性进行访问。

computed: {
    // 当firstName或lastName发生变化时fullName才会被重新计算
    fullName() {
        return this.firstName + ' ' + this.lastName;
    }
}

watch:观察属性,是用于监听指定的数据变化,在数据变化时执行相应的操作,不依赖于其他数据,专注于本身所监听的数据。

watch: {
    firstName(newVal, oldVal) {
        // 当firstName发生变化时执行的操作
        ...
    }
}

二、返回值

computed:返回一个新数据,当作普通属性进行使用。

watch:观察属性并不直接返回值,而是根据响应数据发生变化执行回调函数中的相应操作,达到实时响应的效果。

三、设计初衷

computed:计算属性的目的是让开发者能够根据已有的数据生成新的衍生数据。通过将计算逻辑封装在计算属性中,Vue能够自动追踪计算属性所依赖的数据,并在依赖数据发生变化时自动更新计算属性的值。这种自动追踪和更新的能力使开发者能够以一种声明式的方式定义数据的关系。

watch:观察属性的目的是让开发者能够在指定的数据变化时执行一些副作用逻辑或异步操作。通过观察属性,开发者可以指定要观察的数据属性,并在数据变化时执行相应的回调函数。这使得开发者能够对数据变化做出特定响应,比如发送网络请求、更新其他数据、触发动画等。观察属性提供了一种更灵活的方式来处理数据变化,使得开发者可以根据具体需求执行自定义操作。

四、适用场景

computed:适用于对数据进行处理和派生出新数据的场景。

watch:适用于需要对数据变化做出特定响应的场景。

五、缓存机制

computed:计算属性具有默认的缓存机制。当依赖的数据发生变化时,计算属性会重新计算并返回结果,在后续的访问中,如果计算属性依赖的数据没有发生变化,Vue会直接返回缓存的结果,而不会重新计算。这样可以避免不必要的重复计算,提高性能。如果想要禁用计算属性默认的缓存机制,可以使用 cache 属性设置:

computed: {
    fullName: {
        get() {
            return this.firstName + ' ' + this.lastName;
        },
        cache: false  // 禁用
    }
}

watch:观察属性默认情况是没有缓存机制的。每当观察的数据发生变化时,Vue都会立即执行相应的回调函数,而不考虑之前的回调结果。其中有一些属性可以进行设置:

watch: {
    firstName: {
        handler(newVal, oldVal) {  // 回调操作
            ...
        },
        immediate: true,  // 启用观察属性的初始回调,在初始化时也会执行一次回调函数
        deep: true  // 深度观察嵌套对象的变化
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详细聊聊Vue中设计的computed和watch 的相关文章

随机推荐

  • mmcv与cuda,pytorch版本匹配要求

    mmcv与cuda pytorch版本兼容要求 见mmcv官方文档 https mmcv readthedocs io zh CN latest get started installation html pip 安装部分 目前网页上默认最
  • 【SQL注入13】referer注入基础及实践(基于BurpSuite工具和Sqli-labs-less19靶机平台)

    目录 1 概述 2 实验简介 2 1 实验平台 2 2 实验目标 3 实验过程 3 1 前戏 3 2 判断注入点及注入类型 3 3 获取库名表名字段名字段内容 3 4 实验结果 4 总结 1 概述 Referer 是 HTTP 请求头的一部
  • 小程序能当成 App 吗?FinCip:能

    如果早些年提问 把小程序当成 App 使用 本身就是一件天方夜谭的问题 好像业务人员不再关注研发工程师是否能够按期交付代码 而是想自己在屏幕上点击几下光标 编程软件就能快速生成无数个页面和应用 时光荏苒一去不返 如今的低代码产品早都把 拖拉
  • Google 的开源技术protobuf 简介与例子

    今天来介绍一下 Protocol Buffers 以下简称protobuf 这个玩意儿 本来俺在构思 生产者 消费者模式 系列的下一个帖子 关于生产者和消费者之间的数据传输格式 由于里面扯到了protobuf 想想干脆单独开一个帖子算了 p
  • 登录注册代码

    服务器的建立 服务器中的代码 浏览器代码 MyHttpManager代码 Main代码 注册界面的代码 文本文档流程图 服务器的建立 1 右键在web里面找到Dynamic web project 建立一个服务器 在Java Resourc
  • Error: JAVA_HOME is not set and java could not be found in PATH.

    CSDN话题挑战赛第2期 参赛话题 学习笔记 目录 前言 问题 解决办法 测试 启动成功 查看状态 关闭服务 前言 因为zookeeper服务器多 每一次启动 关闭和查看状态都很麻烦 所以通过shell脚本启动zookeeper集群 写完的
  • 二叉树、队列、栈、广义表(二)数据结构与算法(十八)

    数据结构与算法 一 软件设计 十七 https blog csdn net ke1ying article details 129220378 线性表 队列与栈 队列 先进先出 栈 先进后出 循环队列 队投和队尾连接起来 队空的条件 Hea
  • sqlserver跨服务器查询性能,sqlserver 多表查询不同数据库服务器上的表

    第一种方法 创建链接服务器 exec sp addlinkedserver srv lnk sqloledb 条码数据库IP地址 exec sp addlinkedsrvlogin srv lnk false null 用户名 密码 go
  • Android Studio 升级 Flamingo 后 Gradle 又挂了

    1 Gradle 7 2 才支持 Java 17 Unsupported Java Your build is currently configured to use Java 17 0 6 and Gradle 5 0 Possible
  • 求最小素因子和最大素因子

    转载自 https blog csdn net wsniyufang article details 6623576 include
  • ERR_UNKNOWN_URL_SCHEME 导致的可能问题

    今晚在做跨域测试的时候 明明已经用了 jsoup去处理 但却一直报 ERR UNKNOWN URL SCHEME 错误 然后就是百度找答案 但是也没有解决问题 然后看了一下自己请求的地址是下面这样的 前面没有加上 http 所以我在前面加上
  • Docker+Nginx:实现网站部署的灵活性与高效性

    Hi I m Huuuui 这次为大家简单介绍一下docker环境中去部署nginx 希望能够帮到大家 环境 1 拉取nginx镜像 拉取镜像 docker pull nginx 查看镜像 docker images 2 本地创建映射文件夹
  • E罗斯宝藏网站,收藏起来一定用的到!

    网站叫做https rutracker org 收藏起来总有一天你会用得到 你可以在这里获取各种资源 例如Adobe全家桶 Windows系统 以及各种游戏和3a大作电影等 当初为了打击盗版被封禁 现在因为各大公司对E罗斯的制裁 该网站已被
  • 数据库开发技术

    第一次作业 一 单选题 共40题 80分 1 单选题 2分 单选题 在E R模型中 实体间的联系用 图标来表示 A 矩形 B 直线 C 菱形 D 椭圆 我的答案 C 菱形 正确答案 C 菱形 2分 2 单选题 2分 单选题 设R是一个关系模
  • antd中form表单的正则校验

    以下面input为例
  • 数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)

    一 数仓及其维度 1 什么是数仓 数据仓库 简称数仓 Data Warehouse 从逻辑上理解 数据库和数仓没有区别 都是通过数据库软件实现存放数据的地方 只不过从数据量来说 数据仓库要比数据库更庞大 数仓主要是为企业制定决策 提供数据支
  • 小白入门区块链(通俗易懂)

    区块链基础入门 什么是区块链 科技层面解释 数学 密码学 互联网 计算机编程 官方解释 区块链是一个分布式的共享账本和数据库 具有去中心化 不可篡改 全程留痕 可以追溯 集体维护 公开通明的特点分布式数字账簿 加密技术 不可篡改 通证 一种
  • C++中的基本语句

    C 程序由很多明确表达的语句组成 其中常见的语句包含声明语句 赋值语句 消息语句 函数调用 函数原型和返回语句 其中声明语句和赋值语句中的核心就是变量 变量的声明语句 也称为定义 使用一个简单的标识符来描述计算机存储空间中一定位置的存储单元
  • Python生成requestment.txt文件

    python中通过requirements txt来记录项目所有的依赖包及其版本号 以便在其他的环境中部署 pip freeze gt requirements txt python中通过requirements txt来记录项目所有的依赖
  • 详细聊聊Vue中设计的computed和watch

    一 定义 它们都提供了一种在响应式数据变化时执行响应操作的机制 computed 计算属性 是基于其他数据进行计算得到的 依赖于其他数据 只有当依赖的数据发生变化时 计算属性才会自动更新 并当作普通属性进行访问 computed 当firs