【vue.js】文档解读【day 2】 | 计算属性

在这里插入图片描述

如果阅读有疑问的话,欢迎评论或私信!!
本人会很热心的阐述自己的想法!谢谢!!!

文章目录

  • 计算属性
    • 计算属性 vs 方法
    • 可计算属性
    • Getter不应有副作用
    • 避免直接修改计算属性值

计算属性

我们已经学习了怎么定义数据,怎么定义方法。那么当我们需要对数据进行加工处理时,我们第一时间可能会想到使用方法对数据进行加工。但是vue却提供了一个叫做计算属性的对象,vue为什么推荐使用计算属性呢? 计算属性对比方法有什么好处吗?

计算属性 vs 方法

我们首先来看一个vue官方文档的例子:

export default {data() {return {author: {name: 'John Doe',books: ['Vue 2 - Advanced Guide','Vue 3 - Basic Guide','Vue 4 - The Mystery']}}},computed: {// 一个计算属性的 getterpublishedBooksMessage() {// `this` 指向当前组件实例return this.author.books.length > 0 ? 'Yes' : 'No'}}
}

publishedBooksMessage可以看作是一个被响应式包装的数据,如果更改author对象中的数据,那么publishedBooksMessage属性也会同样被修改。这一点就是计算属性和方法的不同之处,同时计算属性还会被缓存。如果你不想要一个响应式且被缓存的数据,那你就可以使用方法,具体怎么做看自己需要。

计算属性中的数据只有被依赖的那个响应式属性(author.books)改变了才会重新计算,而不是所在对象(author)

在vue官方文档中有下面这个例子:

computed: {now() {return Date.now()}
}

用户可能想要根据Date.now() 变化的同时更新now属性,但是忘记了Date.now不是响应式数据

可计算属性

我们可能有时候想要像更改data中数据那样更改计算属性,但是vue提供给我们的计算属性是只读属性的数据。那么我们要如何才能修改呢?

我们可以通过定义一个包含getter和setter方法的对象来创建一个可写计算属性。例如:

<template><p @click="publishedBooksMessage = ['123']">{{ publishedBooksMessage  }}</p>
</template><script>
export default {data() {var author = {name: "John Doe",books: ["Vue 2 - Advanced Guide","Vue 3 - Basic Guide","Vue 4 - The Mystery",],};return {author,};},computed: {publishedBooksMessage: {get(){console.log(this.author)return this.author.books.length  //3 -> 1},set(newValue){this.author.books = newValue}},}
};
</script>

Getter不应有副作用

在我们创建的可写计算属性中,我们一定不可以在getter中编写可以修改其他DOM的代码,最重要的一句话就是不要改变其他任何东西的状态!getter的职责本就是用来获取一个属性值并暴露出去。

避免直接修改计算属性值

在上述可写计算属性的列子中,其实不应该直接将books值修改为一个新的数组,因为那样我们还不如直接修改books中的length来的更快。我们更多的是要对books中的值进行修改,比如使用push方法或者pop方法修改,来重新计算books.length。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于经验模式分解和小波阈值的自适应降噪研究_杨铮

目的 针对轴承信号在采集过程中容易受到不同环境下噪声干扰&#xff0c;提出EMD分解结合小波阈值的自适应降噪的方法&#xff0c;对轴承振动信号进行降噪处理&#xff0c;提取出所需要的振动信号。方法 首先对含有噪声的轴承信号进行EMD分解&#xff0c;得到n个IMF并进行小波阈…

Git版本控制工具简介

版本控制工具 分类 集中式版本控制工具 CVS、SVN、VSS 缺点&#xff1a;如果服务器一旦宕机&#xff0c;所有历史数据将会丢失 分布式版本控制工具 Git、Mercurial、Bazaar、Darcs...... 优势&#xff1a;本地即可进行版本控制&#xff0c;很好避免了单点故障 需要有一个远程…

JavaEE:网络编程

网络编程&#xff1a;通过代码完成基于网络的跨主机通信 跨主机通信方式&#xff1a; 1.TCP/IP网络 2.蓝牙通信 3.近场通信NFC 4.毫米波通信&#xff1a;功率高&#xff0c;带宽高&#xff0c;抗干扰能力差 其中TCP/IP网络是日常编程中最常涉及到的&#xff0c;最通用的跨主机通…

【考研数学】打基础用张宇《30讲》还是武忠祥《基础篇》?

基础课不太可能所有的东西全都覆盖&#xff0c;还是先搭起一个知识框架&#xff0c;然后不断的填充和完善。 所以不必太过于在意少一些东西&#xff0c;我们不可能一口吃成胖子&#xff0c;基础知识肯定不会遗漏的&#xff0c;只可能一些技巧不到位。 从自己的情况考虑&#…

jenkins 使用k8s插件连接k8s集群

jenkins 安装k8s 插件 配置k8s节点 填写k8s 配置信息 生成秘钥 在服务器上面 查看地址 Kubernetes 服务证书 key cat /root/..kube/config 查看秘钥 对秘钥进行base64 位 加密 echo "秘钥内容" | base64 -d -----BEGIN CERTIFICATE----- MIIDITCCAgmgAwIB…

漏洞发现-漏扫项目篇武装BURP浏览器插件信息收集分析辅助

知识点 1、插件类-武装BurpSuite-漏洞检测&分析辅助 2、插件类-武装谷歌浏览器-信息收集&情报辅助 章节点&#xff1a; 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合漏扫&特征漏扫&被动漏扫&联动漏扫 Poc开发-Ymal语…

Linux:导出环境变量命令export

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的内建命令export命令用于创建一个环境变量&#xff0c;或将一个普通变量导出为环境变量&#xff0c;并且在这个过程中&#xff0c;可以给该环境变量赋值。 下面…

19.创建帖子

文章目录 一、建立路由二、开发CreatePostHandler三、编写logic四、编写dao层五、编译测试运行 一、建立路由 这里要稍微注意的是&#xff1a;需要登录后才可以发表帖子&#xff0c;所以需要用到我们之前写的鉴权中间件。中间件对用户携带的token解析成功后&#xff0c;便会将…

第6章:6.1 文本格式化 (MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 在数据处理与报告生成的过程中&#xff0c;我们经常需要将数据转…

JUC之JMM

Java内存模型JMM JMM三大特性&#xff1a;可见性、有序性、原子性 可见性 原子性&#xff1a;指一个操作是不可打断的&#xff0c;即多线程的环境下&#xff0c;操作不能被其他线程干扰 有序性 处理器在进行重排序时&#xff0c;必须要考虑指令之间的数据依赖性。多线程环境…

【c++修仙】c语言练气第九重动态内存管理

为什么要有动态内存 例如 int a20 char arr[10]{10}; 这些的内存是固定的 但是有时候我们需要的空间大小是在程序运行的时候才能知道的 malloc和free void* malloc (size_t size) 这个函数向内存申请一块连续可用的空间&#xff0c;并返回指向这块空间的指针。 如果开辟…

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…