前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue中的computed

vue中的computed

原创
作者头像
用户1349575
发布于 2022-02-18 12:59:45
发布于 2022-02-18 12:59:45
92200
代码可运行
举报
文章被收录于专栏:编程社区编程社区
运行总次数:0
代码可运行

omputed虽然写法上像个函数,但是实际上是计算属性。它会根据data数据的数据对象做计算处理,就类似于getter跟setter一样创造一个存取器属性。它有个特点,就是Vue内部做了缓存处理,只有它的依赖属性发生了变化,它才会重新计算并且触发渲染。否则不会再次触发计算。

普通写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const vm=new Vue({
    data:{
        a:1
    },
    computed:{
        b:function(){
            return this.a+1
        },
        c(){ // es6写法
        return this.a+2
        }
    }
})
vm.b //2
vm.c //3

上面的效果用methods也能实现。确实使用methods也能实现此种需求,但是在这种情况下我们的计算属性相较于methods是有很大优势的,这个优势就是计算属性存在缓存。

如果我们使用methods实现前面的需求,当message的反转结果有多个地方在使用,对应的methods函数会被调用多次,函数内部的逻辑也需要执行多次;而计算属性因为存在缓存,只要message数据未发生变化,则多次访问计算属性对应的函数只会执行一次。

计算属性的sette

计算属性默认只有getter,不过在需要时你也可以提供一个setter。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const vm=new Vue({
    data:{n:1},
    computed:{
        a:{
            get(){return this.n+1},
            set(value){this.n=value-1}
        }    
    
    }
})
vm.n // 1
vm.a =3
vm.n //2

存取器的写法看上去就像设置一个属性一样了,而且我们还可以设置计算属性的值,上面的写法会影响到响应式属性n,当设置vm.a时,vm.n也会发生变化。

computed默认有缓存效果,当计算属性没有发生变化时,不会重新计算更不会重新渲染。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
45·灵魂前端工程师养成-Vue进阶属性computed和watch
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/11/08
4280
45·灵魂前端工程师养成-Vue进阶属性computed和watch
Vue专题 02_计算属性(computed) VS 方法(methods)
两种方式的最终结果都是完全相同的(这里解释一下为什么会相同:当计算属性所依赖的数据发生改变时,计算属性会重新调用;当data中的任何一个数据发生变化时,Vue的模板都会重新解析一遍(Vue都会拿过来模板整体再阅读一遍),所以方法也被调用了一次)
用户9999906
2022/09/26
4100
Vue 里的 computed 和 watch 的区别 ?
计算属性将会混入到Vue的实例当中,所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。
青梅煮码
2023/01/16
5820
Vue中computed和watch比较
Vue在监听数据的时候我们都会用computed和watch,但是很少人真正的去比较两个的区别,一般都是能实现就行。本人也是,习惯了watch,之后就几乎没用过computed。所以用官网的例子理解一下这两者的区别。
wade
2020/04/24
7260
vue学习笔记(3)--computed, watch,calss, style
声明一个计算属性severmessage,在computed中被指向对message进行一些方法操作后的返回值
子舒
2022/06/09
7130
Vue中computed分析
在Vue中computed是计算属性,其会根据所依赖的数据动态显示新的计算结果,虽然使用{{}}模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板中放入太多的逻辑会让模板过重且难以维护,所以对于任何复杂逻辑,都应当使用计算属性。计算属性是基于数据的响应式依赖进行缓存的,只在相关响应式依赖发生改变时它们才会重新求值,也就是说只要计算属性依赖的数据还没有发生改变,多次访问计算属性会立即返回之前的计算结果,而不必再次执行函数,当然如果不希望使用缓存可以使用方法属性并返回值即可,computed计算属性非常适用于一个数据受多个数据影响以及需要对数据进行预处理的条件下使用。
WindRunnerMax
2020/09/28
6270
Vue中的三种Watcher
Vue可以说存在三种watcher,第一种是在定义data函数时定义数据的render watcher;第二种是computed watcher,是computed函数在自身内部维护的一个watcher,配合其内部的属性dirty开关来决定computed的值是需要重新计算还是直接复用之前的值;第三种就是whtcher api了,就是用户自定义的export导出对象的watch属性;当然实际上他们都是通过class Watcher类来实现的。
WindRunnerMax
2021/06/11
1.1K0
Vue2 源码解析
Vue.js 是一个渐进式 MVVM 框架,目前被广泛使用,也成为目前前端技术中颇具代表性的一个框架。
EchoROne
2022/08/15
1.2K0
Vue2 源码解析
[Vue 牛刀小试]:第五章 - 计算属性与监听器
  在 Vue 中,我们可以很方便的将数据使用插值表达式( Mustache 语法)的方式渲染到页面元素中,但是插值表达式的设计初衷是用于简单运算,即我们不应该对差值做过多的操作。当我们需要对差值做进一步的处理时,这时,我们就应该使用到 Vue 中的计算属性来完成这一操作。同时,当差值数据变化时执行异步或开销较大的操作时,我们可以通过采用监听器的方式来达到我们的目的。
程序员宇说
2019/09/11
4060
[Vue 牛刀小试]:第五章 - 计算属性与监听器
Vue源码阅读 - 依赖收集原理
vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一些营养,同时对一些阅读源码时的想法进行总结,出产一些文章,作为自己思考的总结,本人水平有限,欢迎留言讨论~
前端下午茶
2018/10/22
1.2K0
Vue源码阅读 - 依赖收集原理
Vue(5)计算属性computed
一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性。比如以下:
全栈程序员站长
2022/09/19
8250
手摸手带你理解Vue的Computed原理
computed 在 Vue 中是很常用的属性配置,它能够随着依赖属性的变化而变化,为我们带来很大便利。那么本文就来带大家全面理解 computed 的内部原理以及工作流程。
WahFung
2020/08/24
1.2K0
Vue基础:响应式
Vue不是框架(前端框架往往需要解决路由、试图管理、数据持久化等流程),Vue只关注视图层。
奋飛
2019/08/15
1.1K0
石桥码农:20 vue计算属性和侦听器
在template里的插值表达式,如果太长,会让模板代码变得难于维护;如果有多处用到了同样的插值表达式,也不便于复用和修改。例如,这样的一个插值表达式:
LIYI
2020/02/13
6900
石桥码农:20 vue计算属性和侦听器
Vue.js基础特性
计算属性 computed 与data,el,methods属性一样,都是vm实例的属性(选项) 理解其大致意思即可
河湾欢儿
2018/09/06
1.9K0
2023前端vue面试题(边面边更)_2023-03-01
key 是为 Vue 中 vnode 的唯一标记,通过这个 key,diff 操作可以更准确、更快速
yyds2026
2023/03/01
6470
[Vue] v-model 绑定对象不实时更新
在最近参与的一个项目中,前端用到了 vue.js 框架,期间有个功能需要动态的向一个被绑定的对象中添加属性。但是在实际应用中问题出现了:在向对象中添加属性后,与对象绑定的组件内容却未发生变化,必须要再次刷新组件,其内容才会变为更改后的内容
做棵大树
2022/09/27
2.5K0
[Vue] v-model 绑定对象不实时更新
vueweb端响应式布局_vue响应式原理图文详解「建议收藏」
Vue最显著的特性之一便是不太引人注意的响应式系统(reactivity system)。模型层(model)只是普通JS对象,修改它则更新视图(view)。这会让状态管理变得非常简单且直观,不过理解它的工作原理以避免一些常见的问题也是很重要的。
全栈程序员站长
2022/09/02
1.6K0
vue计算属性详解——小白速会
一、什么是计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 这里的表达式包含3个操作,并不是很清晰,所以遇到复杂逻辑时应该使用Vue特带的计算属性computed来进行处理。 二、计算属性的用法 在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以。 我们把上
柴小智
2018/04/10
9590
2022前端经典vue面试题(持续更新中)
一个SPA应用的路由需要解决的问题是 页面跳转内容改变同时不刷新 ,同时路由还需要以插件形式存在,所以:
bb_xiaxia1998
2022/09/16
1K0
相关推荐
45·灵魂前端工程师养成-Vue进阶属性computed和watch
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验