iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中使用计算属性的知识点总结
  • 207
分享到

Vue中使用计算属性的知识点总结

2024-04-02 19:04:59 207人浏览 八月长安
摘要

计算属性 有些时候,我们在模板中放入了过多的逻辑,从而导致模板过重,且难以维护。例如: <div id="app"> {{ message.split('').

计算属性

有些时候,我们在模板中放入了过多的逻辑,从而导致模板过重,且难以维护。例如:


<div id="app">
  {{ message.split('').reverse().join('') }}
</div>

碰到这样的情况,我们必须看一段时间才能意识到,这里是想要显示变量message的翻转字符串,而且,一旦我们想要在模板中多次使用翻转字符串时,会更加麻烦。 所以,当我们处理复杂逻辑时,都应该使用计算属性。

基础用法

计算属性是Vue配置对象中的属性,使用方式如下:


<div id="app">
   <!-- 计算属性的值可以像data数据一样,直接被使用 -->
  {{ someComputed }}
</div>
const vm = new Vue({
  el: '#app',
  computed: {
     // 返回的值,就是计算属性的值
    someComputed () {
      return 'some values'
    }
  }
})

例如,我们想要获取到一串字符串的翻转字符串,我们可以利用计算属性来做:


<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符处啊: "{{ reversedMsg }}"</p>
</div>
const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello'
  },
  computed: {
    reversedMsg: function () {
      return this.msg.split('').reverse().join('');
    }
  }
})

我们可以看到,reversedMsg的值取决于msg的值,所以,当我们更改msg的值是,reversedMsg的值也会随之更改。

计算属性 vs 方法

其实,我们上述的功能,利用方法也可以实现,如:


<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符串: "{{ reversedMsg() }}"</p>
</div>
const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello'
  },
  methods: {
    reversedMsg: function () {
      return this.msg.split('').reverse().join('');
    }
  }
})

虽然在表达式中调用方法也可以实现同样的效果,但是使用计算属性和使用方法有着本质的区别。 当使用方法时,每一次页面重新渲染,对应的方法都会重新执行一次,如:


<div id="app">
  <p>{{ name }}</p>
  <p>{{ reversedMsg() }}</p>
</div>
const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello',
    name: 'shanshan'
  },
  methods: {
    reversedMsg: function () {
      console.log('方法执行啦');
      return this.msg.split('').reverse().join('');
    }
  }
})
vm.name = 'duyi';

在上面的例子中我们可以看到,一旦更改name的值,页面会重新渲染,此刻控制台中打印出方法执行啦这串字符串,代表着reversedMsg这个函数执行了,但是我们并不需要该方法执行,因为改动的数据和这个函数没有任何关系,如果这个函数内的逻辑很复杂,那么对于性能来讲,也是一种消耗。

但是利用计算属性做,就不会有这样的现象出现,如:


const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello',
    name: 'shanshan'
  },
  computed: {
    reversedMsg: function () {
      console.log('计算执行啦');
      return this.msg.split('').reverse().join('');
    }
  }
})
vm.name = 'duyi';

此时可以看到,当给数据name重新赋值时,计算属性并没有执行。 所以,计算属性和方法的最本质的区别,是:计算属性是基于响应式依赖进行缓存的,计算属性的值一直存于缓存中,只要它依赖的data数据不改变,每次访问计算属性,都会立刻返回缓存的结果,而不是再次执行函数。而方法则是每次触发重新渲染,调用方法将总会再次执行函数。

那么,为什么需要缓存呢?

假如说,我们有一个计算属性A,它需要遍历一个巨大的数组并且做巨大的计算。然后我们需要使用到这个计算属性A,如果没有缓存,我们就会再次执行A的函数,这样性能开销就变得很大了。

深入计算属性

计算属性除了写成一个函数之外,还可以写成一个对象,对象内有两个属性,getter&setter,这两个属性皆为函数,写法如下:


const vm = new Vue({
  el: '#app',
  computed: {
    fullName: {
      getter () {
         // 一些代码
      },
      setter () {
         // 一些代码
      }
    }
  }
})

getter 读取

在前面,我们直接将计算属性写成了一个函数,这个函数即为getter函数。也就是说,计算属性默认只有getter。 getter的this,被自动绑定为Vue实例。

何时执行?

当我们去获取某一个计算属性时,就会执行get函数。


const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello'
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split('').reverse().join('');
      }
    }
  }
})

setter 设置

可选,set函数在给计算属性重新赋值时会执行。 参数:为被重新设置的值。 setter的this,被自动绑定为Vue实例。


const vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello',
    firstStr: ''
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split('').reverse().join('');
      },
      setter (newVal) {
        this.firstStr = newVal[0];
      }
    }
  }
})

要注意,即使给计算属性赋了值,计算属性也不会改变,在重复一遍,只有当依赖的响应式属性变化了,计算属性才会重新计算。

练习_姓名筛选


personArr: [
  { 
    name: '', 
    src: '.jpg', 
    des: '颈椎不好', 
    sex: 'm', 
    id: '056482'
  },
  { 
    name: '', 
    src: '.jpg', 
    des: '我是谁', 
    sex: 'f', 
    id: '157894'
  },
  { 
    name: '', 
    src: '.jpg', des: '我长得很好看', 
    sex: 'f', 
    id: '2849245'
  },
  { 
    name: '', 
    src: '.jpeg', 
    des: '你没有见过陌生的脸', 
    sex: 'm', 
    id: '348515'
  },
  { 
    name: '', 
    src: '.jpeg', 
    des: '瓜皮刘', 
    sex: 'm', 
    id: '478454'
  }
]

练习_全选商品


courseList: [
  {
    poster: '.jpg',
    title: '',
    price: 1299,
    cart: 1,
    id: 0
  },
  {
    poster: '.jpg',
    title: '',
    price: 1148,
    cart: 1,
    id: 1595402664708
  },
  {
    poster: '.jpg',
    title: '',
    price: 1,
    cart: 1,
    id: 1596305473062
  },
  {
    poster: '.jpg',
    title: '',
    price: 1,
    cart: 1,
    id: 1595413512182
  },
  {
    poster: '.jpg',
    title: '',
    price: 12798,
    cart: 1,
    id: 1596302161181
  },
  {
    poster: '.jpg',
    title: '',
    price: 1,
    cart: 1,
    id: 1596300025301,
  },
]

知识点扩展:

实例扩展


<div id="app1"></div>

    <div id="app2">
        {
<!-- -->{reverseMes}}
    </div>
let vm1 = new Vue({
            el:'#app1',
            data:{
                mes:'hello'
            }
        })

        let vm2 = new Vue({
            el:'#app2',
            computed: {
                reverseMes(){
                    // 使用实例 vm1中的data数据中心的 mes 去做反转字符串的操作
                    return vm1.mes.split('').reverse().join('')
                }
            }
        })

实例vm1中的数据,vm2计算属性也可以使用

自定义的计算属性除了可以在插值表达式中使用,还可以在 v-bind: 属性绑定中使用,用来做一些样式的变换等等。

以上就是Vue中使用计算属性的知识点总结的详细内容,更多关于Vue中怎么使用计算属性的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue中使用计算属性的知识点总结

本文链接: https://www.lsjlt.com/news/159156.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中使用计算属性的知识点总结
    计算属性 有些时候,我们在模板中放入了过多的逻辑,从而导致模板过重,且难以维护。例如: <div id="app"> {{ message.split('')....
    99+
    2022-11-12
  • vue中的虚拟dom知识点总结
    目录一、简介二、为什么VUE引入了虚拟DOM?三、vnode1.vnode的类型四、虚拟dom的核心——patch1.patch的过程新增节点删除节点更新节点...
    99+
    2022-11-13
  • Java中的引用知识点总结
    本篇内容介绍了“Java中的引用知识点总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!强引用:默认情况下,对象采用的均为强引用(这个对象的...
    99+
    2023-06-05
  • vue中对虚拟dom的理解知识点总结
    本质是一个普通的js对象,用于描述视图界面结构的, 在mouted的回调中,可以输出_vnode,  通过图可以知道,_vnode中有以下几个主要的属性: t...
    99+
    2022-11-12
  • Vue中计算属性如何使用
    Vue中计算属性如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、计算属性1.1 概述计算属性归根结底也是属性,它也是跟表现层是时刻同...
    99+
    2022-10-19
  • vue中如何使用计算属性
    这期内容当中小编将会给大家带来有关vue中如何使用计算属性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是计算属性模板内的表达式非常便利,但是设计它们的初衷是用于...
    99+
    2022-10-19
  • Vue中怎么使用计算属性
    这期内容当中小编将会给大家带来有关Vue中怎么使用计算属性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。下面带大家了解一下Vue计算属性,介绍一下Vue计算属性的基础用法。计算属性有些时候,我们在模板中放...
    99+
    2023-06-21
  • vue中计算属性computed怎么使用
    这篇“vue中计算属性computed怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue中计算属性computed...
    99+
    2023-07-02
  • Vue中的计算属性与监听属性怎么用
    今天小编给大家分享一下Vue中的计算属性与监听属性怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、为什么要使用计算属...
    99+
    2023-06-29
  • Vue中的计算属性computed怎么用
    今天小编给大家分享一下Vue中的计算属性computed怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、计算属性co...
    99+
    2023-07-04
  • Vue中使用计算属性的方法是什么
    这篇文章主要介绍“Vue中使用计算属性的方法是什么”,在日常操作中,相信很多人在Vue中使用计算属性的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中使用计算属性的方法是什么”的疑惑有所帮助!...
    99+
    2023-06-21
  • Vue中的计算属性和axios基本使用回顾
    目录1. 什么是计算属性2. 计算属性的特点计算属性3. 如何声明计算属性4. 计算属性的使用注意点5. 计算属性 vs 方法6. axiosaxios的基本使用总结1. 什么是计算...
    99+
    2023-01-28
    Vue计算属性 Vue axios基本使用 Vue中axios使用
  • Vue中计算属性和侦听器怎么使用
    本篇内容主要讲解“Vue中计算属性和侦听器怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中计算属性和侦听器怎么使用”吧!在Vue中通常我们会在模板绑定表达式,模板是用来描述视图结构...
    99+
    2023-06-03
  • vue中动态参数与计算属性的使用方法
    一,动态参数 从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数: <a v-bind:[attributeName]=“url”&...
    99+
    2022-11-12
  • Vue计算属性与监视(侦听)属性的使用深度学习
    目录计算属性(computed)监视属性(watch)监视的两种方法immediate选项深度监视计算属性(computed) 计算属性指的是通过一系列运算之后,最终得到一个值。这个...
    99+
    2022-11-13
    vue计算属性和侦听属性 vue计算属性 vue监视属性
  • Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用
    这篇文章主要介绍了Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用文章都会有所收...
    99+
    2023-06-30
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2022-11-13
  • ES6中常见基本知识点的基本使用实例汇总
    目录前言1、字面量的增强2、解构Destructuring3、let和const4、作用域5、模板子符串6、函数7、展开语法8、数值表示9、Symbol的基本使用10、Set11、W...
    99+
    2022-11-13
  • 怎么使用Vue计算属性中reduce方法实现遍历
    今天小编给大家分享一下怎么使用Vue计算属性中reduce方法实现遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。vue计...
    99+
    2023-07-05
  • Vue中如何使用方法、计算属性或观察者模式
    这篇文章主要为大家展示了“Vue中如何使用方法、计算属性或观察者模式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中如何使用方法、计算属性或观察者模式”这...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作