Vue---Vue中的compute计算属性里的方法与method里普通方法的区别

一.计算属性的用法

1.在Vue中计算属性和data、methods、watch一个级别的,所以它的位置也和它们一样:

<script>
export default {
    name: "app",
    // 数据
    data() {
        return {};
    },
    //方法
    method:{},
    //计算属性
    computed:{},
    //监听器
    watch:{}
};
</script>

2.计算属性里的方法必须有返回值

3.切记,在使用计算属性的时候不要加()

二.为什么需要用计算属性

1.表达式的计算逻辑可能会比较复杂,使用计算属性可以使模板内容更加简洁

例子:字符串的翻转

<body>
    <div id="app">
        <p>{{ message.split('').reverse().join('') }}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'hello'
            }
        })
    </script>
</body>

 注意:直接把字符串的翻转的计算逻辑写在差值表达式里面,就会让模版显得太复杂不便于阅读与维护。

使用计算属性改进 

<body>
    <div id="app">
        <p>{{ stringReverse }}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'hello'
            },
            computed: {
                stringReverse() {
                    return this.message.split('').reverse().join('')
                }
            }
        })
    </script>
</body>

 将字符串的计算机逻辑放在计算属性的方法里,既把模板内容更加简洁了,代码在计算属性里维护也更加方便

2.计算属性是基于它们的依赖进行缓存
 

计算金额例子: 

<body>
    <div id="app">
        价格:<input type="text" v-model="price"> 数量:
        <input type="text" v-model="num"> 金额:{{countPrice}} 确认金额:{{countPrice}}
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                price: 9,
                num: 6
            },
            computed: {
                countPrice() {
                    console.log('执行了一次compute计算属性的方法');
                    return this.price * this.num
                }
            }
        })
    </script>
</body>

 可以看到我们将计算金额的表达式在写在了计算机属性里并封装成countPrice方法,并在模板中(金额,确认金额)调用了两次计算属性的countPrice方法,打开控制台:

 在控制台我们可以看到计算属性的countPrice方法实际上只运行了一次,这是因为计算属性是基于它们的依赖(在本例中依赖就是price和num)进行计算并且缓存的,也就是说countPrice方法只执行了一次就已经基于依赖把计算结果计算好并且缓存,当下一次再执行该方法时,只要依赖没变,那么该方法不会再次计算,而是直接把缓存好的计算结果返回。

三.计算属性(compute)里的方法与普通方法(methods里)的区别

1.计算属性里的方法是基于它们的依赖进行缓存的,而普通方法不存在缓存

2.计算属性里的方法在执行时不用带小括号,而普通方法需要带小括号

3.计算属性里的方法必须有返回值
 

 修改一下刚才我们基于计算属性的计算金额的例子

<body>
    <div id="app">
        价格:<input type="text" v-model="price"> 数量:
        <input type="text" v-model="num"> 金额:{{countPrice()}} 确认金额:{{countPrice()}}
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                price: 9,
                num: 6
            },
            methods: {
                countPrice() {
                    console.log('执行了一次methods里的方法');
                    return this.price * this.num
                }
            }
        })
    </script>
</body>

 控制台运行:

 可以看到方法运行了两次,普通方法是没有缓存的,并且在查值表达式里执行方法需要带小括号

四.计算属性的应用场景 

1.优化模板结构,使用计算属性可以使模板内容更加简洁

2..某个属性的值需要来自多个属性的简单计算或者复杂逻辑计算得出的值时, 推荐使用computed属性, 比如计算价格总价格等等。

 五.总结

1.计算属性里的方法是基于它们的依赖进行缓存的,而普通方法不存在缓存

2.计算属性里的方法在执行时不用带小括号,而普通方法需要带小括号

3.计算属性里的方法必须有返回值

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cirrod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值