0
点赞
收藏
分享

微信扫一扫

vue中的计算属性computed

12a597c01003 2022-02-09 阅读 92

一、简介
computed与methods和watch最大的区别在于只有在当前属性发生变化后它才会被触发,大大提升优化程度。如果项目中有的数据常常要发生变化的,可以用computed来实现,比如搜索。

二、案例
①index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- cdn是一种引入 -->
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <!-- 这里用link印入 -->
    <link rel="stylesheet" href="styles.css">
    <title>vue-cdn</title>
</head>

<body>
    <div id="vue-app">
        <h1>computed 计算属性</h1>

        <!-- 可以直接绑定的是一个表达式 -->
        <button @click="a++">Add to A</button>
        <button @click="b++">Add to B</button>
        <p>A - {{ a }}</p>
        <p>B - {{ b }}</p>

        <!-- methods (两者比较像)-->
        <!-- 如果使用的是methods,点addToA的时候,addToB也会执行,methods是只要你一个数据发生变化了,其他的方法都会执行,虽然操作了addToA,而addToB的值没变化,但是也会走里面的方法 -->
        <!-- <p>Age + A = {{ addToA() }}</p>
        <p>Age + B = {{ addToB() }}</p> -->

        <!-- computed -->
        <p>Age + A = {{ addToA() }}</p>
        <p>Age + B = {{ addToB() }}</p>
    </div>
</body>
<script src="app.js"></script>

</html>

②app.js

new Vue({
    el: "#vue-app",
    data() {
        return {
            a: 0,
            b: 0,
            age: 21
        };
    },

    methods: {
        // addToA() {
        //     return this.a + this.age;
        // },
        // addToB() {
        //     return this.b + this.age;
        // }
    },
    //computed对数据的变化有优化,它只会调整已经变化的,没有发生变化的它不会走,提升项目优化程度,搜索最好也使用计算属性
    computed: { //方法可以没有返回值,但是computed一定要有返回值
        addToA() {
            console.log('addToA');
            return this.a + this.age;
        },
        addToB() {
            console.log('addToB');
            return this.b + this.age;
        }
    }
})
举报

相关推荐

0 条评论