前言

在基于vue框架的前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性这个钩子函数,可以用于一些状态的结合处理和缓存的操作。

基础使用

在computed中,声明一个函数,并需要提供一个返回值,用于在页面展示或者结合其他方法进行处理

结合state状态使用

通过changeName返回一段依赖于name的字符串

<li>computed基本使用</li>
<li>name值:{{ name }}</li>
<li>{{ changeName }}</li> data() {
return {
name: "zhangsan",
};
}, computed: {
changeName: function () {
return `一段依赖于name:${this.name}的文字`;
},
},

使用其他组件状态

主动触发computed方法,对比不依赖于其他状态下的区别,通过点击事件,主动触发一些操作

<li>{{ isCache }}</li>
<li>{{ cacheTip }}</li>
<li>{{ changeCache }}</li>
<li><button @click="handleChange">修改文字</button></li> data() {
return {
cacheTip: "cacheTip原始值",
};
}, computed: {
isCache: function () {
return `不依赖于任何属性值的一段文字`;
},
changeCache: function () {
return `依赖于cacheTip,${this.cacheTip}`;
},
}, methods: {
handleChange() {
this.cacheTip = "cacheTip状态被修改";
},
},

当我们点击修改状态时,可以看到,cacheTip被修改只会,依赖于cacheTip的changeCache也会发生改变

isCache因为不和其他状态关联,所以还是保持原来的值不变

getter VS setter

上面的cacheTip,或者isCache,在computed的通用方法中,默认都是使用了getter方法去获取处理过的值

可以写成

isCache: {
setter:function () {
return `不依赖于任何属性值的一段文字`;
}
}

通过getter和setter,可以进一步对需要处理的状态进行处理

<li>{{ firstName }}</li>
<li>{{ lastName }}</li>
<li>{{ setterGetter }}</li>
<li><button @click="handleChangeFirst">修改文字</button></li> data() {
return {
firstName: "lewyon001",
lastName: "布欧001",
};
}, computed: {
setterGetter: {
// getter
get: function (newValue) {
console.log("newValue", newValue);
return this.firstName + " " + this.lastName;
},
// setter
set: function (newValue) {
console.log("newValue", newValue);
this.firstName = `${newValue.firstName}`;
this.lastName = `${newValue.lastName}`;
},
},
} methods: {
handleChangeFirst() {
this.setterGetter = { firstName: "lewyon", lastName: "布欧" };
},
},

get属性可以获取最原始的依赖值并处理,

set方法,可以获取修改后的依赖值,在修改之后一并展示到页面上或者进行其他业务需要的处理

computed方法的基础,包括进阶的操作,以及setter和getter方法如上


使用建议

作为经常使用的方法,

  • computed可以作为依赖于其他状态的缓存进行使用,包括一些不经常更新的内容,减少开销
  • 简单的字符串模板结合其他状态
  • 还有其他的场景在开发中,我们都可以进行使用,结合watch等。

关于vue和watch的区别,以及watch的使用详解,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新

文章个人博客地址:vue2.x版本中computed和watch的使用入门详解-computed篇

创作不易,转载请注明出处和作者。

vue2.x版本中computed和watch的使用入门详解-computed篇的更多相关文章

  1. vue2.x版本中computed和watch的使用入门详解-watch篇

    前言 watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等 基本使用 在使用watch的时候,需要 ...

  2. vue2.x版本中computed和watch的使用入门详解-关联和区别

    前面两篇介绍了computed和watch的基本使用 watch篇 computed篇 两者的区别,继续通过代码实现的方式具体去了解 html <li>最开始的value值:{{ name ...

  3. 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解

    JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 ...

  4. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  5. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  6. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  7. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  8. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  9. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

随机推荐

  1. K8s 部署 Dashboard UI 仪表板 ——让一切可视化

    K8s 部署 Dashboard UI  仪表板   --让一切可视化 Dashboard 介绍 仪表板是基于Web的Kubernetes用户界面.您可以使用仪表板将容器化应用程序部署到Kuberne ...

  2. 精简的言语讲述技术人,必须掌握基础性IT知识技能,第一篇

    前言 此系列将以精简的言语讲述技术人,必须掌握基础性IT知识技能,请持续关注,希望给大家都是一些精简的干货. 第一部分:必须掌握的设计模式的6大基本原则 23个设计模式,都是从这六大设计模式中演化而来 ...

  3. opencv笔记--ORB

    ORB detector 使用 FAST detector 和 BRIEF descriptor 基本思路.在介绍 ORB 之前,首先对 FAST 与 BRIEF 进行说明. 1 FAST FAST( ...

  4. Solution -「LOCAL」「cov. 牛客多校 2020 第五场 C」Easy

    \(\mathcal{Description}\)   Link.(完全一致)   给定 \(n,m,k\),对于两个长度为 \(k\) 的满足 \(\left(\sum_{i=0}^ka_i=n\r ...

  5. MyBatis功能点二:plugins插件使用

    MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一.自定义插件,实现Interceptor接口 二.核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试 ...

  6. 私有化轻量级持续集成部署方案--06-私有镜像仓库-Harbor

    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 针对私有镜像仓库的问题,Docker 官方提供了搭建仓库服务的镜像服务:registry,使用此镜像就可以部署私有仓 ...

  7. Unity容器构造函数参数循环引用问题及解决

    关键字: Unity .NET5 .NET6 循环引用 循环依赖 Quartz StdSchedulerFactory 起因 在.NET6/.NET5环境中,使用Unity替换默认容器,用到了Quar ...

  8. Eclipse插件拓展点

    一.新建一个项目,不使用模板 二.增加"hello"拓展点 1. 打开插件描述文件的Extensions页 新建一个插件后,会自动打开插件清单文件编辑器,也可以通过META-INF ...

  9. 轩辕展览-VR虚拟展厅设计如何实现全景漫游功能

    什么是在线3d漫游?如何在VR虚拟展厅设计之中实现3d漫游功能?让我们来分享3dVR虚拟展厅的在线漫游. 实际上,在线3d漫游就是通过3d仿真场景,使用鼠标和键盘在虚拟空间之中自由漫游,它可以从高空俯 ...

  10. 为什么在数据驱动的路上,AB 实验值得信赖?

    在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石. 文 | 松宝 来自 字节跳动数据平台团队增长平台 在线AB实验成为当今互联网公司中 ...