zoukankan      html  css  js  c++  java
  • Title

    计算属性

    vue的模板里可以使用表达式,但是它的设计初衷是用于简单计算,在模板中放入太多逻辑会让模板过重且难以维护。例如:

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

    这里很难一眼看出是要显示什么,而且要多次使用的话也很麻烦,因此对于复杂逻辑应使用计算属性


    错误示例 ```html Title

    {{ message.split('').reverse().join('') }}

    
    <br>
    正确写法
    ```html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 开发环境版本,包含了有帮助的命令行警告 -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
    <div id="app">
        <!--   直接使用方法名就行,不用加括号   -->
        <p>{{ reversedMessage }}</p>
    </div>
    <script>
        //建议vue的变量命与作用的标签id一致
        let app = new Vue({
            el: "#app",  //关联dom对象
            data: {
                message: 'I have a dream'   //模板使用的数据
            },
            //定义计算属性
            computed: {
                // 在computed里定义方法,使用的时候直接写方法名
                reversedMessage: function () {
                    // `this` 指向 app 实例,data里面的数据可以直接获取到htis.message
                    return this.message.split('').reverse().join('')
                }
            }
        })
    
    </script>
    </body>
    </html>
    
    

    ## 计算属性与方法的不同

    上述例子中也可以通过调用方法来达到同样的目的

    在组件中定义方法

    // 在组件中
    methods: {
      reversedMessage: function () {
        return this.message.split('').reverse().join('')
      }
    }
    

    调用方法

    <p>Reversed message: "{{ reversedMessage() }}"</p>
    
    

    就得到的结果而言,两种方式是完全一致的。但是不同的是,计算属性是基于它们的依赖进行缓存的,也就是说,计算属性只有在它的相关依赖发生改变时才会重新求值,对于上述的例子,只要message不发生改变,多次访问reversedMessage计算属性会立即返回结果而不必再次执行函数


    下面我们来验证这个结论 ```html Title

    使用计算属性

    {{reversedMessage}}

    <hr>
    
    
    <p>使用方法</p>
    <p>{{reversedMessageMethod()}}</p>
    
    ```
    打开html,右键检查-console


    ## 小结 - 模板内表达式包含复杂逻辑时,应使用计算属性 - 只要计算属性使用的数据不发生变化,计算属性就不会执行,而是直接使用缓存
  • 相关阅读:
    asp.net超强日历
    闲话多线程的创建
    一些应该熟记于心的jQuery函数和技巧
    jQuery选择符总结
    使用OQL+SQLMAP解决ORM多表复杂的查询问题
    同样的SQL语句在查询分析器执行很快,但是网站上执行超时的诡异问题
    "开门待客"还是“送货上门”?
    使用ASP.NET MVC2+PDF.NET 构建一个简单的新闻管理程序
    使用PDF.NET数据开发框架的实体操作语言OQL构造复杂查询条件
    “批量少次”还是“少量多次”邮件通信系统效率浅谈
  • 原文地址:https://www.cnblogs.com/zzliu/p/10778008.html
Copyright © 2011-2022 走看看