响应式API中 computed 和之前的 computed 选项用法类似。

对于任何复杂逻辑,我们都可能使用计算属性。比如翻转字符串:

<template><h1>{{ text }}</h1><button @click="change">count is: {{ state.count }}</button><p>Edit <code>components/HelloWorld.vue</code> to test hot module replacement.</p>
</template><script>
import { ref, reactive, computed } from 'vue'
export default {name: 'HelloWorld',props: {msg: String},setup(props){let state = reactive({count: 0})let text = computed(() => {return props.msg.split('').reverse().join('')})const change = () => state.count++return { state, change, text }}
}
</script>

计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 msg 还没有发生改变,多次访问 text 计算属性会立即返回之前的计算结果,而不必再次执行函数。

通过 computed 传入一个 getter 函数,返回一个默认不可手动修改的 ref 对象。或者传入一个拥有 get 和 set 函数的对象,创建一个可手动修改的计算状态。

比如下面代码实现全选的逻辑:

<template><input type="checkbox" id="all" v-model="checkedAll"><label for="all">全部选择</label><div></div><input type="checkbox" id="jack" value="Jack" v-model="checkedNames"><label for="jack">Jack</label><input type="checkbox" id="john" value="John" v-model="checkedNames"><label for="john">John</label><input type="checkbox" id="mike" value="Mike" v-model="checkedNames"><label for="mike">Mike</label><br><span>Checked names: {{ checkedNames }}</span>
</template><script>
import { ref, reactive, computed } from 'vue'
export default {name: 'HelloWorld',props: {msg: String},setup(props){let checkedNames = ref([])let checkedAll = computed({get () {return checkedNames.value.length === 3},set (value) {if (value) {checkedNames.value = ['Jack', 'John', 'Mike']} else {checkedNames.value = []}}})return { checkedNames, checkedAll }}
}
</script>

计算属性的 getter 函数是没有副作用的。如果要执行副作用请使用 watch 来代替。关于 watch 的使用我会在下篇文章中介绍。

vue3往期内容:《学习vue3系列ref》《学习vue3系列reactive》

学习vue3系列computed相关推荐

  1. 学习vue3系列reactive

    vue3响应式API有ref和reactive,今天主要讲解reactive函数. <template><h1>{{ msg }}</h1><button @ ...

  2. 学习vue3系列watch

    watch 函数用来侦听特定的数据源,并在回调函数中执行副作用.默认情况是懒执行的,也就是说仅在侦听的源变更时才执行回调. <template><button @click=&quo ...

  3. 学习vue3系列ref

    基于vite初始化项目 npm init vite-app <project-name> cd <project-name> npm install npm run dev 项 ...

  4. 学习Vue3.0,先从搭建环境开始

    Bug源测试,上线来几个.愿君多修改,今夜眼难合. 这是小编关于Vue3.0系列文章的第二篇,本文将带您从零搭建一个基于Vue3.0与vite的Vue3.0开发环境,通过本文的学习,你将学习到以下内容 ...

  5. 学习Vue3.0,先来了解一下Proxy

    产品经理身旁过,需求变更逃不过. 测试姐姐眯眼笑,今晚bug必然多. 据悉Vue3.0的正式版将要在本月(8月)发布,从发布到正式投入到正式项目中,还需要一定的过渡期,但我们不能一直等到Vue3正式投 ...

  6. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引

    SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn  ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...

  7. BP算法双向传_链式求导最缠绵(深度学习入门系列之八)

    摘要: 说到BP(Back Propagation)算法,人们通常强调的是反向传播,其实它是一个双向算法:正向传播输入信号,反向传播误差信息.接下来,你将看到的,可能是史上最为通俗易懂的BP图文讲解, ...

  8. BizTalk学习笔记系列之二:实例说明如何使用BizTalk

    BizTalk学习笔记系列之二:实例说明如何使用BizTalk --.BizTalk学习笔记系列之二<?XML:NAMESPACE PREFIX = O /> Aaron.Gao,2006 ...

  9. 从0开始学习GitHub系列之「Git 速成」

    从0开始学习GitHub系列之「Git 速成」 糖果果| 2016-06-24 10:55    浏览量(32)    评论(0)   推荐(0) 数据 小编注:[从0开始学习 GitHub]是一个系 ...

最新文章

  1. 【Netty】NIO 简介 ( NIO 模型 | NIO 三大组件 | 选择器 Selector | 通道 Channel | 缓冲区 Buffer | NIO 组件分配 | 缓冲区示例 )
  2. Spring中的BeanPostProcessor接口
  3. 程序员晒工资单,还是大厂香!据说大多数3年,35K还少了?
  4. mysql 基于语句的复制_MySQL 复制 - 性能与扩展性的基石 1:概述及其原理
  5. html5中meter讲解_Java中的得墨meter耳定律–最少知识原理–实际示例
  6. Windows下搭建FTP服务器
  7. jquery--选择器sizzle源码分析
  8. Hadoop+Spark 集群部署
  9. 我的布尔玛CSS框架之旅
  10. extern “C”的含义
  11. 程序员需要了解依赖冲突的原因以及解决方案
  12. 网络安全学习--WEB服务器
  13. php酒店系统论文,基于PHP的酒店管理系统PHP1008(毕业设计+论文)
  14. ArcGIS教程:MapGIS向ArcGIS数据格式转换方法
  15. HikariCP配置手册
  16. 使用Redis,QQ邮箱模拟验证码验证
  17. 微信PC版Hook发送群艾特消息研究
  18. install quantopian时出现No module named pip.req的解决办法
  19. 洛谷P2832 行路难
  20. 读取NTU-RGB-D数据集并利用关节信息生成gif

热门文章

  1. 我敲的不是代码,而是……
  2. 不怕面试被问了!二叉树算法大盘点 | 原力计划
  3. 2019 十大国产开源项目来势汹汹!
  4. 重磅揭晓阿里 AliOS Things 3.0 革命性创新!
  5. 13 岁自学编程,提出演进式架构的她,成 ThoughtWorks CTO!
  6. Java 面试如何坐等 offer?
  7. 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线
  8. Unity高管:深耕游戏、VR/AR,致力为开发者提供极致体验
  9. 游戏巨头齐聚 Unite Shanghai 2019,揭秘爆款游戏制作精彩亮点!
  10. 踢爆关于创业公司的五大认知误区!