前言

一直以来对computed这个计算属性都只停在一个大概的认知中,最近特意仔细研读相关资料,亲测后逐渐了解了其特性。

正文

computed

1.watch擅长处理的场景:一个数据影响多个数据

2.computed擅长处理的场景:一个数据受多个数据影响

特点:

1.初始化/依赖属性(即data的return返回对象的属性)改变时执行(前提是在页面调用计算属性)

2.在计算属性函数执行后会缓存返回值

3.计算属性返回值就是计算属性的值

4.当依赖属性未改变时调用计算属性则直接返回缓存的值

用处:需要依赖别的属性来动态获得值的时候或大量重复计算时可以使用 computed

例:

    data() {
return {
msg:''
}
},
computed: {
test: function(){//test为计算属性,调用时和调用属性一样调用test即可
console.log('执行了!')
return 'http://' + this.msg//msg是依赖属性,改变时会执行test函数
}
}

需要特别注意的是依赖属性为数组时,会自动把数组转化为字符串;为对象时,会变为[object Object]

上面的写法中,计算属性不能被修改,如果修改了,就会报下面的错误:

上面错误的原因是computed默认只有getter,所以当你需要修改你所设置的计算属性时必须为它提供一个setter,如下例:

初始化/当计算属性test依赖的响应式属性msg变化时,会执行get(),当计算属性test变化时会执行set(),且set中的参数就是计算属性test的最新值

下例中set()中的赋值是在计算属性test改变时赋值给依赖属性msg,这样两值改变另一方都会改变

    data() {
return {
msg:'12345'
}
},
computed: {
test: {
get:function () {
console.log('当依赖的响应式属性(msg)被修改时执行!')
return this.msg.split('').reverse().join(''); //这里的返回值就是计算属性的最新值,可在此处修改计算属性的值
},
set:function (val) {//val就是计算属性的最新属性值
console.log('当计算属性test被修改时执行!')
this.msg = val;
return val;
}
}
}

Vue计算属性computed的全面解析的更多相关文章

  1. 温故vue对vue计算属性computed的分析

    vue 复习笔记(1)一段时间没有看过vue的官方文档了,温故而知新,所以我决定将vue的文档在看一遍 1计算属性computed在vue的computed中声明的是计算属性,可以使用箭头函数来进行定 ...

  2. vue计算属性computed和methods的区别

    computed和methods的区别 在new Vue的配置参数中的computed和methods都可以处理大量的逻辑代码,但是什么时候用哪个属性,要好好区分一下才能做到正确的运用vue. com ...

  3. 在做vue计算属性,v-for处理数组时遇到的一个bug

    bug: You may have an infinite update loop in a component render function 无限循环 需要处理的数组(在 ** ssq **里): ...

  4. Vue学习3:计算属性computed与监听器

    下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  5. vue从入门到进阶:计算属性computed与侦听器watch(三)

    计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...

  6. vue教程2-03 vue计算属性的使用 computed

    vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...

  7. Vue教程:计算属性computed与侦听器watch(三)

    计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...

  8. 007——VUE中非常使用的计算属性computed实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Vue.js 计算属性(computed)

    Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...

随机推荐

  1. 外置 tomcat 服务器设置

    外置 Tomcat 没这么太用, 今天在 windows  搭 xwiki  服务器, 比预期多花了点时间, 主要是 tomcat 环境变量没配对, tomcat 启动后闪退, 还没有日志. 最后定位 ...

  2. js 常用工具方法

    1.格式化字符串 String.prototype.format = function () { let args = arguments; return this.replace(/\{(\d+)\ ...

  3. Prometheus+Grafana监控MySQL、Redis数据库

    俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼.本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL.Redis). 1.  安装G ...

  4. nginx代理ambassador,再转到mlfow-tracking服务

    这个服务的代理,相对于服务网关来说,有些典型, 今天调通了,作个记录. 一,nginx配置 upstream ai_ambassador { ip_hash; server 1.2.3.4:30080 ...

  5. you have new mail in /var/spool/mail/root !

    今天开发的同事告诉我,他在登录系统时老是提示you have new mail in /var/spool/mail/root ! 我一猜就知道他们肯定又自己写定时任务了,这样的事已经发生过好几回了, ...

  6. lua 12 table 的使用

    转自:http://www.runoob.com/lua/lua-tables.html table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table ...

  7. 一、man、系统工作、系统检测命令

    目录 一.man命令 (一)常用按键 (二)结构意义 二.常用系统工作命令 (一) echo (二)date (三)reboot (四)powoff (五)wget (六)ps (七)top (八)p ...

  8. zz高精地图和定位在自动驾驶的应用

    本次分享聚焦于高精地图在自动驾驶中的应用,主要分为以下两部分: 1. 高精地图 High Definition Map 拓扑地图 Topological Map / Road Graph 3D栅格地图 ...

  9. luoguP4151 [WC2011]最大XOR和路径

    题意 这题有点神啊. 首先考虑注意这句话: 路径可以重复经过某些点或边,当一条边在路径中出现了多次时,其权值在计算 XOR 和时也要被计算相应多的次数 也就是说如果出现下面的情况: 我们可以通过异或上 ...

  10. cURL error 60: SSL certificate problem: unable to get local issuer certificate(转)【亲测】

    php5.6以上的版本会出现这种问题 解决办法: [开启拓展] extension=curl extension=openssl [配置证书] 访问https://curl.haxx.se/docs/ ...