浅谈 Computed和Watch的区别

2023-10-27

computed

计算属性

类似于过滤器,对绑定到试图的数据进行处理,并监听变化进而执行对应的代码

基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用methods时,在重新渲染的时候,函数总会重新调用执行

computed属性默认的只有getter

watch

监听属性

通过watch来响应数据的变化

  • watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态

用法异同

computed和watch都起到监听/依赖一个数据,并进行处理的作用

computed主要用于对同步数据的处理,watch主要用于观测某个值的变化去完成一段开销较大的复杂业务逻辑。能用computed的时候优先用computed,避免了多个数据影响其中某个数据时调用watch的尴尬情况。

  • computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变后,下一次获取computed的值时才会重新调用对应的getter来计算

  • watch在每次监听的值变化时,都会执行回调。如果一个值依赖多个属性(多对一),用computed肯定是更加方便的。如果一个值变化后会引起一系列操作,或者一个值变化会引起一系列值得变化(一对多),用watch更加方便一些

watch的回调里面会传入监听属性的新旧值,通过这两个值可以做一些特定的操作;computed通常是简单的计算

实践 运用

示例一

根据路由的变化 获取id去重新请求接口并展示数据(本质上就是watch路由的变化)

watch:{
  $route(){
    this.getList()//这里为触发请求新列表的函数
  }
}

watch: {
  obj: {
    handler(newName, oldName) {
      console.log('obj.a changed');
    },
    immediate: true,
    deep: true
  }
}

分析:只监听一个值得变化,然后重新去计算

示例二

进入页面之后要从store(vuex)里面去获取一个异步请求回来的数据(你不能确认开始获取是存在的)

    computed: {
        ...mapGetters([
            'getRightOrderId',
            'getUserInfo'
        ]),
        getOrderId() {
            return {
                businessId: this.$route.query.id
            }
        }
    },
    watch: {
        getOrderId: function () {
            this.getOrderAreaData();//获取动态表单
            this.totalPrice=0;
        }
    },

 

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

浅谈 Computed和Watch的区别 的相关文章

随机推荐

  • 矩阵的基本演算

    目录 转置 逆 迹 行列式 转置 A B T
  • 网易低代码引擎Tango正式开源

    一 Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架 借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建 Tango 低代码设计器直接读取前端项目的源代码 并以源代码为中心 执行和渲染前端
  • element ui Tag 动态添加标签

    1 首先调接口获取到标签列表 级联选择器如果选择的不是第三级菜单 async getParamsData if this selectedCateKeys length 3 级联选择器不会有参数 下面的面板也都为空 this selecte
  • 三层架构到DDD四层架构演进

    应用架构演化 三层架构 三层架构 为什么还画了一层 Model 呢 因为 Model 只是简单的 Java Bean 里面只有数据库表对应的属性 有的应用会将其单独拎出来作为一个 但实际上可以合并到 DAO 层 第一步 数据模型与DAO层合
  • 检测是否为快乐数

    编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 1 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 2 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 3 如果可以变为1 那么这个数就是快
  • MySQL类型定义 - 字符串类型

    1 char类型 1 CHAR类型和VARCHAR类型 CHAR类型和VARCHAR类型都在创建表时指定了最大长度 其基本形式如下 字符串类型 M 其中 字符串类型 参数指定了数据类型为CHAR类型还是VARCHAR类型 M参数指定了该字符
  • 数据结构 —七大排序算法(图文详细版)

    文章目录 前言 一 插入排序 1 直接插入排序 1 原理 2 实现 3 稳定性 时间复杂度 2 希尔排序 1 原理 2 具体实现 3 稳定性 时间复杂度 二 选择排序 1 直接选择排序 1 原理 2 具体实现 3 稳定性 时间复杂度 4 优
  • chromebook刷_使用Chromebook编码

    chromebook刷 Chromebooks are awesome They re relatively simple and inexpensive devices that run Chrome OS a stripped down
  • 【linux】基本工具gcc/g++及Makefile

    文章目录 一 程序翻译过程 1 程序的翻译过程 2 理解选项的含义 3 动态链接与静态链接 二 Linux项目自动化构建工具 make Make le 1 背景 2 实例说明 3 原理 4 语法 5 为什么gcc不更新文件 6 推导规则 三
  • eclipse svn 忽略文件夹

    以忽略 target 文件夹为例 window gt preferences gt team gt Ignored Resource gt Add Pattern gt 新建一个 target gt ok 再次同步可见traget下所有文件
  • 2023华为OD机试真题Java实现【食堂供餐/二分法】

    题目内容 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐速度 即 食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求
  • 假如让你来设计SSL/TLS协议

    前言 说起网络通信协议 相信大家对 TCP 和 HTTP 都很熟悉 它们可以说是当今互联网通信的基石 但是 在网络安全方面 它们却是有着很大安全风险 窃听风险 第三方攻击者可以随意窃听通信内容 比如获取支付账号密码 冒充风险 第三方攻击者可
  • 在 WSL2 上部署 PyTorch

    开发项目需要使用AI 但是我习惯用 VMware 来开发各类项目 于是查到 Enable NVIDIA CUDA on WSL 可以实现 CUDA VGPU 的功能 但是国内对这类资料较少 我就想顺便补个空白 在 WSL2 上部署 PyTo
  • <金融产品>京东金融2015年战略主攻三大方向:股权众筹、农村金融和校园金融...

    导读 2014年是京东金融全力奔跑的一年 2015年京东金融业务将会在三个方面发力 上线股权众筹平台 发力农村金融和校园金融 2014年 凭借京东白条 京保贝 京东众筹等产品 京东金融迅速在互联网金融领域占领一席之地 京东CEO刘强东对京东
  • 阅读论文的方法

    清单一 系统阅读论文的方法 1 试着找个安静的地方呆上几个小时 拿上你最喜欢的饮料 可能是咖啡 茶 或者别的什么东西 我经常在咖啡厅里工作 2 从阅读标题和摘要开始 目的是获得论文的高层次概述 作者的主要目标是什么 以及一些实验结果 摘要通
  • 华为OD机试真题B卷 Java 实现【计算礼品发放的最小分组数目】,附详细解题思路

    一 题目描述 又到了一年的末尾 项目组让小明负责新年晚会的小礼品发放工作 为使得参加晚会的同时所获得的小礼品价值相对平衡 需要把小礼品根据价格进行分组 但每组最多只能包括两件小礼品 并且每个分组的价格总和不能超过一个价格上限 为了保证发放小
  • npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\licc\package.json'

    问题描述 在项目中使用npm安装gulp时报异常 node modle文件夹出不来 异常输出如下 npm WARN enoent ENOENT no such file or directory open C Users licc pack
  • yolov5+opencv+java:通过DJL在maven项目中使用yolov5的小demo

    目录 前言 环境 导出yolov5s模型 编写Maven项目 编写pom xml文件 引入opencv依赖 下载opencv 获取opencv的jar包和动态链接库dll文件 将lib文件夹添加为Library 将yolov5权重文件放到资
  • C 中strcpy和memcpy的区别

    参考博客 https blog csdn net zcyzsy article details 53190691 https www cnblogs com metootxy p 3185000 html 一 以下是具体使用memcpy这个
  • 浅谈 Computed和Watch的区别

    computed 计算属性 类似于过滤器 对绑定到试图的数据进行处理 并监听变化进而执行对应的代码 基于它的依赖缓存 只有相关依赖发生改变时才会重新取值 而使用methods时 在重新渲染的时候 函数总会重新调用执行 computed属性默