计算属性computed

本文详细介绍了Vue.js中的计算属性computed,包括getter、setter的使用,简写形式,与methods和侦听器的对比。计算属性提供数据的自动计算和缓存,适用于依赖其他属性并需要进行数据转换的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.计算属性中的getter

2.计算属性中的setter

3.计算属性简写形式

4.计算属性与methods中方法的对比

5.计算属性与侦听器的对比


1.计算属性中的getter

计算属性 : 要使用的数据不存在,需要通过已有的属性计算得到.

get函数中的返回值,作为计算属性的属性值.

get函数什么时候调用: 

  1. 初次页面渲染时调用

  2. 当get函数中依赖的数据发生改变时调用

 示例代码:

<div id="app">
    <h1>{{getValue}}</h1>
    <h1>{{getValue}}</h1>
    <h1>{{num}}</h1>
    <!--    页面显示 : 原数据 原数据 1-->
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            value:'原数据',
            num: 0
        },
        computed: {
            getValue: {
                // get函数第一次渲染页面调用,
                // get函数所依赖的数据发生改变时调用, 数据不发生改变直接用缓存数据
                get: function () {
                    this.num += 1
                    return this.value
                },
             
            }
        }
    })
   
</script>

注意 : 以上代码中,虽然多次使用了getValue计算属性,但是get函数只执行了一次,其他几次都是直接从缓存中获取的数据,所以num显示结果为1

 2.计算属性中的setter

set函数什么时候调用 :     

   计算属性被修改时调用

  示例代码:

<div id="app">
    <button @click="getValue=333">点击更改数据</button>
    <h1>{{getValue}}</h1>
    <h1>{{getValue}}</h1>
    <h1>{{num}}</h1>
<!--    初次页面显示 : 原数据 原数据 1-->
<!--    点击按钮后  : 333 333 2-->
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            value:'原数据',
            num: 0
        },
        computed: {
            getValue: {
                // get函数第一次渲染页面调用,
                // get函数所依赖的数据发生改变时调用, 数据不发生改变直接用缓存数据
                get: function () {
                    this.num +=1
                    return this.value
                },
                // 计算属性(getValue)被修改时调用
                set: function (params) {
                    this.value = params
                }
            }
        }
    })

</script>

分析 : 因为点击按钮时,修改了计算属性(getValue)的值,set函数被调用, get函数所依赖的数据发生了改变,get函数再次被调用,num值再次加1,value值被改为333, 所以页面显示最新的数据 :333   333  2

 3.计算属性简写形式

如果我们只是使用计算属性,不对计算属性进行修改,可以不用写set函数,只写get函数,

简写方式为: 计算属性名( ){ }

 简写方式如下:

<div id="app">
    <h1>姓: {{firstName}}</h1>
    <h1>名: {{lastName}}</h1>
    <h1>全名: {{fullName}}</h1>
</div>
<script>
     new Vue({
        el: '#app',
        data: {
            firstName:'张',
            lastName: '三'
        },
        // computed: {
        //     fullName:{                // 只写get函数,不写set函数,可以进一步简写如下
        //         get:function(){
        //             return this.firstName + '-' + this.lastName
        //         }
        //     }
        // },
        computed: {
            fullName(){               // 此时的计算属性,就是只有get函数,没有配置set函数
                return this.firstName + '-' + this.lastName
            }
        }
    })

</script>

4.计算属性与methods的对比

1. 计算属性必须有返回值

    methods中的方法可以有返回值,也可以没有

2. 计算属性有缓存,不会每次调用都执行

   methods中的方法没有缓存,方法每次调用都会执行

5.计算属性与侦听器的对比 

计算属性 : 
   1.1 计算属性的get函数中必须有返回值
   1.2 计算属性有缓存
   1.3 计算属性名称可以自定义
   1.4 计算属性不能处理异步任务,只能进行数据运算
侦听器:   
  1.1 侦听属性返回值可以有可以没有
  1.2 侦听属性没有缓存
  1.3 侦听属性的函数名称必须是data中的已有属性
  1.4 侦听属性可以用来处理异步任务,消耗性能的需求,如ajax请求等

官网地址:计算属性和侦听器 — Vue.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值