• 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


    ## 小结 - 模板内表达式包含复杂逻辑时,应使用计算属性 - 只要计算属性使用的数据不发生变化,计算属性就不会执行,而是直接使用缓存
  • 相关阅读:
    JavaScript heap out of memory
    【vue3】全局样式配置
    vue版本变更,Vue脚手架版本变更,如何全局使用及问题解决相关
    node 版本列表
    JN_0051:如何修改win系统用户名,彻底修改 如何以超级管理员登录系统
    JS_0058:JS 根据是否有网络判断是否加载本地资源或网络资源 js时间戳 js顺序加载
    PlayCanvas_0012:Cnvas 配置参数设置
    查询SQLSERVER语句执行日志
    查看SQLSERVER邮件配置 sp_send_dbmail profile
    gitlab runner set git clean (ignore to delete node_modules) before per stage start
  • 原文地址:https://www.cnblogs.com/zzliu/p/10778008.html
Copyright © 2020-2023  润新知