vue2.x版本中computed和watch的使用入门详解-computed篇
前言
在基于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篇的更多相关文章
- vue2.x版本中computed和watch的使用入门详解-watch篇
前言 watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等 基本使用 在使用watch的时候,需要 ...
- vue2.x版本中computed和watch的使用入门详解-关联和区别
前面两篇介绍了computed和watch的基本使用 watch篇 computed篇 两者的区别,继续通过代码实现的方式具体去了解 html <li>最开始的value值:{{ name ...
- 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解
JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 ...
- vue2.x版本中Object.defineProperty对象属性监听和关联
前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
- opencv中 int main(int argc,char* argv[])详解
opencv中 int main(int argc,char* argv[])详解 argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 ...
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- UIViewController中各方法调用顺序及功能详解
UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
随机推荐
- Docker Harbor私有仓库部署与管理 (超详细配图)
Docker Harbor私有仓库部署与管理 1.Harbor 介绍 2.Harbor部署 3.Harbor管理 1.Harbor 介绍: 什么是 Harbor ? Harbor 是 VMware 公 ...
- 列出ubuntu软件管理工具apt的一些用法(自由总结)
安装软件包 [root@CentOS7 ~]#apt install tree 删除软件包 [root@CentOS7 ~]# apt remove tree 列出仓库软件包 [root@CentOS ...
- Aselenium前言
https://seleniumhq.github.io/docs/index.html https://www.seleniumhq.org/ THE SELENIUM BROWSER AUTOMA ...
- Codeforces Round #756 (Div. 3)
本场战绩:+451 题目如下: A. Make Even time limit per test 1 second memory limit per test 256 megabytes input ...
- python使用泛型
所谓的泛型, 就是将数据类型作为参数进行传递, 即在我们用的时候确定数据类型, 这是一种在面向对象语言中经常使用的特性 一般类使用 以SQLAlchemy举例 比如: 我们统一写个将数据保存到数据库的 ...
- JMM之synchronized关键字
对于通讯,涉及两个关键字volatile和synchronized: Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象及其成员变量分配的内存实在共享 ...
- RocketMQ的invokeSync call timeout异常的解决办法
缘起 在RocketMQ客户端的DefaultMQPushConsumer的start方法被执行时,时不时会报出invokeSync call timeout异常,如下: Caused by: jav ...
- [Java]Java入门笔记(二):数据类型、程序结构、数组、控制台输入
二.基本语法 2.1 标识符 定义:给类.方法.变量等起的名字 规则: 可以使用字母(26个英文字母的大小写.各国的一些语言.-).数字.下划线.美元符号: 不能以数字开始(可以$开始): 不能是Ja ...
- 【硬件基础知识】指令集框架(ISA:Instruction Set Architecture)
指令框架(ISA:Instruction Set Architecture) 定义 指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系, ...
- 【C#IO 操作】stream 字节流|字符流 |比特流
stream的简介 Stream 所有流的抽象基类. 流是字节序列的抽象,例如文件.输入/输出设备.进程中通信管道或 TCP/IP 套接字. Stream类及其派生类提供这些不同类型的输入和输出的一般 ...