广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中的computed和watch用法及区别
  • 566
分享到

Vue中的computed和watch用法及区别

Vuecomputed和watchVuecomputedVuewatch 2023-05-17 20:05:32 566人浏览 安东尼
摘要

目录Vue computed 是如何实现的computed demovue的watch是如何实现的watch demovue computed 是如何实现的 Vue 的 comput

vue computed 是如何实现的

Vue 的 computed 属性实现了一个响应式的计算属性。当计算属性所依赖的响应式变量发生改变时,计算属性会自动重新计算其值。

Vue 在内部通过使用 Object.defineProperty() 方法来实现 computed 属性。具体地说,Vue 创建一个新的计算属性描述符对象,该对象包含 getset 方法,然后调用 Object.defineProperty() 方法将计算属性绑定到 Vue 实例上。

get 方法中,Vue 会收集计算属性所依赖的响应式变量,并建立依赖关系图。这样,当响应式变量发生变化时,Vue 就能够知道哪些计算属性需要重新计算。

set 方法中,Vue 可以执行一些额外的逻辑,例如检查计算属性是否可以被设置。但通常情况下,set 方法是不需要的,因为计算属性是只读的。

总之,Vue 的 computed 属性利用了 javascript 中的属性描述符和响应式原理,来实现一个方便、高效、易用的计算属性系统。

computed demo

下面是一个简单的 Vue Computed 的实现示例:

// 创建一个 Vue 实例
const vm = new Vue({
  data: {
    firstName: 'John',
    lastName: 'Doe',
  },
  computed: {
    fullName: function () {
      return this.firstName + ' ' + this.lastName;
    },
  },
});
// 访问计算属性
console.log(vm.fullName); // "John Doe"

在上述示例中,Vue 实例 vm 中定义了一个 data 对象和一个 computed 对象。在 computed 对象中,我们定义了一个名为 fullName 的函数,它返回 firstNamelastName 属性的组合。

当我们访问 vm.fullName 时,Vue 会自动调用 fullName 函数,并将其结果缓存起来。如果后续访问 vm.fullName,而且 firstNamelastName 没有发生变化,Vue 将直接返回之前缓存的结果,而不会重新计算。

这就是 Vue Computed 的基本工作原理。通过定义一个计算属性,你可以轻松地实现数据的计算和缓存。这样做不仅可以提高性能,还可以使代码更加简洁易读。

vue的watch是如何实现的

vue.jswatch 是通过使用 Object.defineProperty() 函数实现的。当你在 Vue 实例上定义一个 watch 时,Vue 会将其作为一个属性添加到实例对象中,并使用 Object.defineProperty() 将该属性转换为 getter/setter 形式。这样,当被监控的属性发生变化时,Vue 就会调用对应的回调函数以执行相应的操作。同时,Vue 还提供了深度监听和立即触发回调等

watch demo

以下是一个简单的 Vue 示例,演示如何使用watch来观察数据的变化:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        count: 0,
      };
    },
    methods: {
      increment() {
        this.count++;
      },
    },
    watch: {
      count(newVal, oldVal) {
        console.log(`count changed from ${oldVal} to ${newVal}`);
      },
    },
  };
</script>

该示例定义了一个名为count的响应式数据,并在模板中显示它。还定义了一个increment方法,在点击按钮时将计数器递增。此外,还定义了一个watch选项,以便在数据变化时打印一条消息。

当你在浏览器中运行该示例时,每次点击“Increment”按钮时,Vue 都会检测到count的值已更改,并且将调用watch选项中定义的函数。该函数输出将类似于以下内容:

count changed from 0 to 1
count changed from 1 to 2
count changed from 2 to 3
...

到此这篇关于Vue中的computed和watch用法及区别的文章就介绍到这了,更多相关Vue computed和watch内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue中的computed和watch用法及区别

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

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

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

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

下载Word文档
猜你喜欢
  • Vue中的computed和watch用法及区别
    目录vue computed 是如何实现的computed demovue的watch是如何实现的watch demovue computed 是如何实现的 Vue 的 comput...
    99+
    2023-05-17
    Vue computed和watch Vue computed Vue watch
  • vue中watch和computed区别
    vue中watch和computed区别有:watch不支持缓存,而computed支持缓存。watch支持异步,而computed不支持异步。watch属于侦听属性,而computed则属于计算属性。处理的数据关系场景不同,watch擅长...
    99+
    2022-10-12
  • Vue中的watch是什么以及watch和computed的区别
    目录一、watch是什么?二、应用基本用法三、Watch和computed的区别computed和watch的综合运用实例需求:实现代码(helloworld.vue实现代码)一、w...
    99+
    2022-11-13
  • Vue中computed和watch的区别小结
    目录一、Vue中computed和watch的区别二、computed计算属性三、区别总结区别:计算属性computed支持缓存,只有依赖数据发生改变,才会重新进行计算;不支持异步,...
    99+
    2022-12-10
    Vue中computed和watch的区别 Vue中computed和watch异同
  • Vue中的watch、watch和computed的区别是什么
    本文小编为大家详细介绍“Vue中的watch、watch和computed的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中的watch、watch和computed的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-02
  • 分析 Vue 中的 computed 和 watch 的区别
    目录一、computed介绍1.1、get 和 set 用法 1.2、计算属性缓存二、watch介绍三、两者区别3.1、对于 computed3.2、对于 watch四、应...
    99+
    2022-11-12
  • Vue 中的 computed 和 watch 的区别详解
    目录computed注意应用场景watch总结computed computed 看上去是方法,但是实际上是计算属性,它会根据你所依赖的数据动态显示新的计算结果。计算结果会被缓存,c...
    99+
    2022-11-13
  • vue中computed 和 watch有什么区别
    vue中computed 和 watch有什么区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、computed 和 wa...
    99+
    2022-10-19
  • Vue中computed和watch的区别有哪些
    小编给大家分享一下Vue中computed和watch的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概述我们在 Vue 项目中多多少少都会有用到 co...
    99+
    2023-06-15
  • Vue中computed属性和watch,methods的区别
    目录computedwatchmethods归纳三者不同点1、methods2、computed3、watch在Vue中,computed、watch和methods是处理响应式数据...
    99+
    2023-05-19
    Vue computed属性 watch methods
  • vue中computed和watch的区别和运用场景
    这篇文章主要为大家展示了“vue中computed和watch的区别和运用场景”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中computed和watch...
    99+
    2022-10-19
  • 详解Vue中Computed与watch的用法与区别
    目录computedcomputed只接收一个getter函数computed同时接收getter函数对象和setter函数对象调试 ComputedwatchEffect立即执行 ...
    99+
    2022-11-13
  • Vue中的computed和watch的区别是什么
    Vue中的computed和watch的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面带大家认识Vue中的computed 和 watch,介绍一下compu...
    99+
    2023-06-22
  • 如何理解Vue中computed和watch的区别
    目录概述computed 计算属性watch 监听属性总结概述 我们在 Vue 项目中多多少少都会有用到 computed 和 watch,这两个看似都能实现对数据的监听,但还是有区...
    99+
    2022-11-12
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2022-11-13
  • 关于Vue的 watch、computed和methods的区别汇总
    目录1 前言2 基础用法2.1 methods 方法2.2 computed 计算属性2.3 watch 侦听器3 三者的区别3.1 方法 VS 计算属性 3.2 计算属性 VS 侦...
    99+
    2022-11-12
  • vue2.x版本中computed和watch的使用及关联和区别
    目录前言区别补充结语前言 前面篇介绍了computed和watch的基本使用vue2.x版详解computed和watch的使用 两者的区别,继续通过代码实现的方式具体去了解 htm...
    99+
    2022-11-13
  • vue3的watch用法以及和vue2中watch的区别
    目录watch介绍Vue2 用法监听基础变量监听对象Vue3的用法监听基础类型监听复杂类型组合监听Vue 2 Vue3 小区别computed和watch的区别总结watch介绍 w...
    99+
    2023-05-16
    vue3的watch Vue2的watch vue2 vue3 watch区别
  • vue.js中methods watch和computed的区别是什么
    这篇文章给大家介绍vue.js中methods watch和computed的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、作用机制上computed\watch:watch和computed都是以Vue...
    99+
    2023-06-20
  • vue.js中methods watch和computed的区别示例详解
    目录前言介绍一、作用机制上二、从性质上三、watch和computed的对比四、methods不处理数据逻辑关系,只提供可调用的函数五、从功能的互补上看待methods,watch和...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作