vue 计算属性最通用的讲解 简单 易懂

1.vue计算属性,computed 官网概念:

  模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护.

  这句话看似简单,并且配上了一个十分简单的demo,导致很多同学在使用computed的时候,并没有真正的领会到,计算属性的执行原理与过程。

1.第一个问题计算属性会在什么时候执行?。

  (1. watch属性的执行,十分的清晰,只要当监听的值发生改变的时候,就会立即触发响应执行。如果需要第一次赋值就执行,需要使用immediate属性即可。

 同比与computed属性,我们可能会认为,官网说的很明显了,当依赖的属性发生改变的时候,就会触发执行。

   (2. 计算属性的执行时机到底是什么时候呢。

  引出这个问题的原因在于,我们想要更加的明确计算属性中依赖的数据,是否得到最新的变更。

  因此计算属性get函数的触发,在于使用计算属性的地方!!

  比如在模板中<template>使用计算属性,那么计算属性的执行必然在组件created生命周期执行完成后,在mounting 挂载页面时执行。

  如果是在某一个函数中使用计算属性,那么计算属性必然是在该函数获取(计算属性值)的地方触发计算属性的方法。

  所以总结理解,计算属性是在渲染或使用计算属性时,判断计算属性中的绑定于vue(this)的实例是否发生变化。如果发生变化就进行函数的重新渲染执行。

 1.细节点,计算属性不会监听对象中属性的变化从而引发变化 同理更深一层的数组中 对象发生变化也不会发生变化。

 2.如果在计算属性中使用 (if else) (switch) 没有执行的语句,当this属性发生变化,也不会触发计算属性的改变。

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue计算属性(computed)是一种能够基于现有的响应式数据进行计算属性。它们本质上是一个函数,但是可以像普通属性一样在模板中使用。计算属性的值会根据它的依赖(响应式数据)自动进行更新,只要依赖数据发生变化,计算属性就会重新计算计算属性的定义方式如下: ```javascript computed: { propertyName: function() { // 计算逻辑 return value; } } ``` 其中,propertyName 是计算属性的名称,function 是计算属性的定义。在这个函数中,你可以编写任何逻辑来计算属性的值,并在最后使用 return 语句返回计算结果。 在模板中使用计算属性的方式与使用普通属性类似。例如,如果有一个计算属性 fullName,我们可以在模板中像这样使用它: ```html <p>{{ fullName }}</p> ``` 当 fullName 的依赖数据发生变化时,Vue 会自动更新模板中的 fullName 值。 计算属性还有一些特殊的特性: 1. 缓存:计算属性默认是带有缓存的,也就是说,只要依赖数据没有发生变化,多次访问计算属性会立即返回之前的计算结果,而不会重新计算。这是因为 Vue 内部会追踪依赖,并在依赖发生变化时才重新计算计算属性的值。 2. Setter:除了 getter 函数,计算属性还可以定义一个 setter 函数,用于处理对计算属性的赋值操作。setter 函数接收新的值作为参数,并可以根据需要对其他相关的响应式数据进行更新。 下面是一个使用计算属性的示例: ```html <template> <div> <input v-model="firstName"> <input v-model="lastName"> <p>{{ fullName }}</p> </div> </template> <script> export default { data() { return { firstName: '', lastName: '' }; }, computed: { fullName: { get() { return this.firstName + ' ' + this.lastName; }, set(value) { const [firstName, lastName] = value.split(' '); this.firstName = firstName; this.lastName = lastName; } } } }; </script> ``` 在上面的示例中,我们定义了两个输入框用于输入 firstName 和 lastName。计算属性 fullName 通过 get 函数返回 firstName 和 lastName 的拼接结果。同时,我们也定义了一个 set 函数,用于根据传入的新值更新 firstName 和 lastName 的值。 通过这样的方式,我们可以在模板中双向绑定计算属性 fullName,并且在输入框中输入 fullName 的值时,会自动更新 firstName 和 lastName 的值。 希望这个详细讲解对你有帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值