computed计算属性和data_Vue项目中如何使用computed计算属性

文章目录

computed:

1、基本使用:

1.1 应用场景:

1.2 代码位置:

1.3 值:

2、复杂操作-结合data中数据:

3、计算属性写法演变:

3.1 计算属性的setter和getter:

① 完整的计算属性写法:属性+方法

② 计算属性一般只有get方法,是只读属性。所以一般写法为:

③ 语法糖---简化写法:

4、项目中实例:

computed:

1、基本使用:

在computed中定义一个函数(看起来是一个函数,其实是一个属性),命名按照属性规范命名(一般为名词)。

1.1 应用场景:

当数据A的逻辑很复杂时,把A这个数据写在计算属性中。

1.2 代码位置:

通过选项computed:{计算属性a:值}

1.3 值:

带有返回值return的函数。

计算属性a和data中的数据用法一样。计算属性在computed中进行定义,无需再在data中定义,在template中直接可进行使用,使用方式与data中定义的数据一样。

{{msg}}


{{str}}

var vm = new Vue({

el: '#app',

data: {

msg: 'abc'

},

computed: {

str: function () {

return this.msg

}

},

methods: {

}

})

执行结果:

b4adceb9887739cce34723417873076f.png

2、复杂操作-结合data中数据:

当计算属性b依赖了data中的数据a时,当a变化时,b会自动变化。这也是在开发中通常用到的情况。比如在购物的时候,下某一订单时,每选择一件商品(对应data中的数据a),合计费用(对应计算属性b)就会跟着变化。

79b7367d7acc8bc0f759b54a63925c5e.png

下方的例子即模拟上方的效果:

总价格:{{totalPrice}}

var vm = new Vue({

el: '#app',

data: {

books: [

{ id: 1000, name: 'Linux编程之美', price: 50 },

{ id: 1001, name: 'Java疯狂讲义', price: 60 },

{ id: 1002, name: '深入理解计算机原理', price: 80 },

{ id: 1003, name: '操作系统', price: 30 },

{ id: 1004, name: '数据结构导论', price: 60 },

]

},

computed: {

totalPrice() {

let result = 0;

for (let i = 0; i < this.books.length; i++) {

result += this.books[i].price;

}

return result

}

},

methods: {

}

})

执行结果:

fa8da0ace95a30e6223a18001734f87a.png

3、计算属性写法演变:

3.1 计算属性的setter和getter:

computed:{

//computed里面是大括号,本身就是对象。

}

① 完整的计算属性写法:属性+方法

computed: {

//定义属性

totalPrice: {

//totalPrice 属性对应的是对象,不是字符串。对象就会有方法。

//该属性对应的set方法 和get方法

//计算属性一般是没有set方法的,是只读属性。

//【此处set测试失败 没有出现预期效果】

set: function (newValue) {

console.log('get方法调用啦', newValue);

},

get: function () {

console.log('计算属性完整写法:计算啦');

let result = 0;

for (let i = 0; i < this.books.length; i++) {

result += this.books[i].price;

}

return result

}

}

},

② 计算属性一般只有get方法,是只读属性。所以一般写法为:

computed: {

totalPrice: function () {

//后面对应的即为get方法。totalPrice就是一个属性,调用时采用属性调用的方式,区别于方法调用()

console.log('计算属性一般写法:计算啦');

let result = 0;

for (let i = 0; i < this.books.length; i++) {

result += this.books[i].price;

}

return result

}

},

③ 语法糖—简化写法:

computed: {

totalPrice() {

console.log('计算属性语法糖写法:计算啦');

let result = 0;

for (let i = 0; i < this.books.length; i++) {

result += this.books[i].price;

}

return result

}

},

4、项目中实例:

以上即为计算属性computed的使用方式。最近在项目开发中,有个需求为:【考试配题模块】配置某一题型(例如选择题/简答题等某类试题)个数或者每一小题分数时,会实时计算出当前选择的某类试题拥有的个数和当前题目个数所对应的小题分数的总分之和。如图所示效果:

2aac0abda2d435d0cce2127a67d30638.png

template中代码:

课程名称:{{ courseName }}
总题数:{{ allQuestion }}个
当前总分:{{ allValue }}分

computed中代码:

allQuestion: function() {

var num = 0;

this.selectedObj.forEach((item) => {

num += item.questionNum; //questionNum为拿到的selectedObj对象中的需要使用的属性

});

return num;

},

//计算总分

allValue: function() {

var source = 0;

this.selectedObj.forEach((item) => {

source += item.questionValue * item.questionNum; //questionValue 为拿到的selectedObj对象中的需要使用的属性

});

return source;

},

},

computed中依赖的data中数据部分:

// 子组件给父组件传过来的对象

selectedObj: [],

Vue与TypeScript的完美结合 前言:     TypeScript 是 JS类型的超集,并支持了泛型、类型、命名空间、枚举等特性,弥补了 JS 在大型应用开发中的不足。在我们自己单独学习 TS时,时常感觉很多知识点还是比较好理解的,但要框架结合的话,感觉就有点糟,因为我使用Vue比较多,这里就介绍Vue 框架与 TS的结合。     下面就结合我的经验,简单介绍一下如何在Vue中平滑的从JS过渡到TS,在各位大佬面前班门弄斧了。(想了解的更具体的话,可以参考官方文档,官方文档就是最好的入门手册) 构建: 通过官方脚手架Vue-CLI构 阅读详情

相关推荐

STM32H743实战(三)-- 时钟系统配置

本文详细讲解了STM32H743时钟系统的配置方法,重点解析了为何选择400MHz而非理论极限480MHz作为稳定运行的主频。通过STM32CubeIDE环境,手把手指导如何从外部晶振配置、电源电压设置到PLL锁相环参数调整,最终实现稳定可靠的400MHz系统时钟,并提供了代码验证与常见问题排查指南。

weixin_29164185的博客 346

03-vue计算属性

计算属性 概述 计算属性computedvue实例的一个属性,它methods的用法完全一样,一般如果我们要对数据进行一定的变通后显示的话,可以使用这个属性。 基本使用 <body> <!-- 假如我们想对数据进行一定的变更后显示 --> <div id="app"> <h2>{{firstName+' '+lastName}}</h2> <h2>{{firstName}} {{lastName}

ilove_story的博客 337

Vue.js 中如何在 `data` 属性使用计算属性

计算属性会根据依赖的数据动态计算,并且会缓存计算结果,只在相关数据发生变化时重新计算。这使得我们可以在模板中直接使用计算属性,而不必在模板中编写复杂的逻辑。需要注意的是,计算属性在模板中的使用方式与普通属性是一样的,不需要在模板中调用函数。Vue.js 会自动检测计算属性的依赖关系,并在相关数据变化时更新计算属性。当我们需要基于已有的数据派生出一些新的属性时,计算属性提供了一种优雅的解决方案。这个函数会返回一个对象,对象中定义了我们需要的计算属性。的方式使用计算属性,这样会直接显示出完整的名字。

2301_79331387的博客 700

Vue datacomputed 的区别

v-for 的数据刷新,多语言切换的数据更新

m0_47186751的博客 763

Vue 常用属性 data、methods、computed、watch

计算属性一般就是用来通过其他的数据算出一个新数据,而且它有一个好处就是, 它把新的数据缓存下来了,当其他的依赖数据没有发生改变,它调用的是缓存的数据,这就极大的提高了我 们程序的性能。会在创建新组件实例的过程中调用此函数(将里面定义的变量都放到实例里面去,你就可以使用this点出来,包括HTML里面就能够使用这些变量的)。选项中的数据一样,可以在组件的模板中使用(挂载到html中某个dom上面)。你要的数据名不需要在data里面去定义,但是数据还是需要的,你的数据都是从data里面拿到的。

小楼一夜听春雨,深巷明朝卖杏花 1977

watch computed 区别使用场景

computed 计算属性适合根据 data 里的属性,来做一些简单的计算并返回结果,例如数组的排序、筛选等等,它的结果会缓存起来,只有 data 中的属性发生变化时才会重新计算,其它情况会直接返回计算结果,以提高效率。计算属性可以像 data 属性一样直接在 html 模板中使用。watch 适合在 javascript 中监听 data 属性的变化,并根据变化做一些耗时的操作或者发送远程 API 请求。watch 中的方法一般没有返回,而是直接修改 data 中的属性

似水流年QC的博客 5308

Vue中watch与计算属性computed

vue中watchcomputed

警警的博客 1251

[Vue] Computed property "XXX" was assigned to but it has no setter.

项目过程中经常遇到如下问题: [Vue warn]: Computed property "CurrentStep" was assigned to but it has no setter. 意思是:计算属性 CurrentStep 被赋了,但此它并未定义 set方法 ,故出现上面错误提示。 vue官网中关于计算属性的示例是这样的: var vm = new Vue({ data: { a...

weixin_34090562的博客 3万+

Vue3【创建项目、代码分析、响应式原理-代理、data详解、methods、computed

Vue3【创建项目、代码分析、响应式原理-代理、data详解、methods、computed

m0_52896752的博客 922

vue.js高仿饿了么课程踩坑

初学vue,跟着老师学习高仿饿了么项目,老师初讲课程是vue1.0版本,自己直接用的2.5版本,踩了不少坑,看vue官方文档解决了各种问题,今天踩的坑如下:  对应代码:     查询官方文档对computed的描述:“计算属性是基于它们的依赖进行缓存的,只在相关依赖发生改变时它们才会重新求”,报错代码中的计算属性listShow的依赖是data中的fold,listShow...

weixin_44382043的博客 359

vuecomputed根据不同的状态改变不同的样式

在做项目的时候遇到了如题的需求,解决方式如下 1.用来接收这个状态的变量是在data中定义了的,那么html中不用传参,在computed中直接用this.xxx就可以改变,代码如下: <template> <div class="main" :style="{'background':getBackground}"></div> </template> <script> data(){ return { handleState:

weixin_46196950的博客 2962

Vue学习--配置项

Vue的配置项 基本格式 new Vue({ el: '#app', data: { //数据 }, methods: { //事件处理程序 }, computed: { //计算属性 }, watch: { //侦听属性 } }) el :将id为ap...

weixin_44050518的博客 282

Vue项目中如何使用computed计算属性

文章目录computed:1、基本使用:1.1 应用场景:1.2 代码位置:1.3 :2、复杂操作-结合data中数据:3、计算属性写法演变:3.1 计算属性的settergetter:① 完整的计算属性写法:属性+方法② 计算属性一般只有get方法,是只读属性。所以一般写法为:③ 语法糖---简化写法:4、项目中实例: computed: 1、基本使用: 在computed中定义一个函数(看起来是一个函数,其实是一个属性),命名按照属性规范命名(一般为名词)。 1.1 应用场景: 当数据A的

梦蝶 3万+

vuevue生命周期,vue-cli

vue-cli npm install vue-cli -g vue init webpack my-project npm install 生成package.json npm run dev 本地运行 或 npm run build 上线(生成dist文件夹) vue生命周期     beforeCreate  =&gt; el与data并未初始化        =&gt; ...

html标签-meta 677

vue 动态设置高度

项目开发过程中,很多时候都会用到动态计算的样式,比如高度、高度,实现方法: 1、首先在dom元素中定义style属性,如下: <template> <div class="punch-clock-wrapper" ref="punchcontent" :style="{height: scrollerHeight}"> <div class="punch-clock-header"> <img :src="clockList.imageUrl"

qq_29236119的博客 5578

computd watch methodsmixin

computd vs watch vs methods 项目中: computed计算属性: 有逻辑 像变量一样使用 一定要有return返回 <div id="app"> <p> {{split_msg}} </p> </div> new Vue({ el:'#app', data:{ ...

你好的博客 191

typescript vuex_优雅的在vue使用TypeScript

引言近几年前端对 TypeScript的呼声越来越高,Typescript也成为了前端必备的技能。TypeScript 是 JS类型的超集,并支持了泛型、类型、命名空间、枚举等特性,弥补了 JS 在大型应用开发中的不足。在单独学习 TypeScript时,你会感觉很多概念还是比较好理解的,但是一些框架结合使用的话坑还是比较多的,例如使用 React、Vue 这些框架的时候与 TypeScript...

weixin_39726697的博客 682

前端框架:vue2

文章目录一、介绍vue:常用7个属性二、基础语法1.v-bind2、条件与循环(if for)3.**for循环**4、v-on 监听事件:5、v-model 一、介绍 <div id="app"> {{ message }} </div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) vue:常用7个属性 el属性 用来指示vue编译器从什么地方开始解析 vue

weixin_44953928的博客 2838

vue通过子组件修改父组件prop的几种实现方式

目录前言常用方式1. 通过父组件on监听子组件emit事件实现修改prop2. 通过父组件sync修饰符 + 子组件emit事件实现修改prop取巧方式3.通过赋data实现修改prop4.通过计算属性监听实现修改prop 前言 实际工作项目开发中,很经常会有父组件先传递给子组件,再由子组件渲染展示的场景,下面我总结一下目前工作中遇到用过的一些方式,也算是给大家一个实现方式思路参考,如有理解不对or有其他方法欢迎在评论区留言指导~ 常用方式 推荐,遵循prop单向传递的规则,基本数据类型引用数据

栋子哥的开发日常 6251

2026年全国青少年信息素养大赛算法应用主题赛C++样题及答案解析

2026年全国青少年信息素养大赛算法应用主题赛C++样题

王老师青少年编程 3570

基于阈分割的车牌定位识别_阈分割_车牌识别matlab_图像处理_

图像处理案例,本程序用matlab实现基于阈分割的车牌定位识别功能

上一篇: vue低层_【译PPT/必读】尤雨溪:Vue 3.0的设计原则
下一篇: mysql数据存储_浅谈Mysql数据存储
weixin_39622521
博客等级 码龄9年 60粉丝 143原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值