vue指令第四关,马上通关

computed

在Vue.js中,computed 是一种属性,用于定义基于依赖状态的响应式计算属性。它是Vue提供的一个强大特性,允许你在模板中以声明式的方式处理数据的计算逻辑。

computed 的特点:

  1. 响应式: computed 属性是响应式的,它们会根据依赖的数据进行更新,只有在依赖的数据发生改变时才会重新求值。
  2. 缓存: 计算属性会根据它们的依赖进行缓存,只有当依赖值发生改变时才会重新计算。这意味着只要相关依赖没有改变,多次访问计算属性会立即返回之前的计算结果,而不会重新执行计算函数。

如何使用 computed:

你可以在 Vue 实例中的 computed 对象中定义计算属性,这些属性可以依赖于 Vue 实例的数据。比如:

javascriptCopy 复制代码
new Vue({
  data: {
    a: 1,
    b: 2
  },
  computed: {
    // 一个计算属性的 getter
    sum: function () {
      return this.a + this.b;
    }
  }
});

然后你可以在模板中使用这个计算属性 sum:

htmlCopy 复制代码
<div>
  <p>Computed Sum: {{ sum }}</p>
</div>

示例说明:

当 a 或者 b 发生变化时,sum 计算属性会自动更新。这是因为 Vue 能够追踪到 sum 依赖的 a 和 b,并在它们发生变化时重新计算 sum 的值。

使用 computed 的好处之一是它使得模板更加清晰和简洁。你可以将复杂的逻辑封装在 computed 中,而不必将这些逻辑直接放在模板中。

总结:

computed 是 Vue.js 中一个非常有用的特性,它允许你以声明式的方式定义依赖属性,并根据这些属性进行响应式的计算。这对于处理模板中的逻辑和复杂计算十分有帮助,使得代码更易读、易维护。

实战演练

根据天气的温度选择穿什么衣服。

html 复制代码
<body>
    <div id="app"></div>
    <template id="my-app">
       <h2>当前温度:{{temp}}</h2>
        <h3>建议穿:{{cloth}}</h3>
        <button @click="minus">-5</button>
        <button @click="add">+5</button>
    </template>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.js"></script>
    <script>
        const app = Vue.createApp({
            template:'#my-app',
            data(){
                return{
                    temp:20,
                    // cloth:'夹克'
                    }
                },
            computed:{   //计算属性是响应式执行的,
                         // 函数会在所依赖的变量值发生改变时自动重新执行
                cloth(){
                    if (this.temp <= 10) {
                        return '棉袄'
                     } else if (this.temp <= 20) {
                        return '夹克'
                    } else {
                        return '短袖'
                    }
                }
            },
            methods:{
                minus(){
                    this.temp-=5
                },
                add(){
                    this.temp+=5
                }
            }
  
        }).mount('#app')
        
    </script>
</body>

当computed追踪的temp发生改变时,重新执行函数cloth。

相关推荐
Cosolar4 分钟前
极简智库(MiniDocs):docsify、VitePress、Notion 等知识库搭建服务的完美替代
前端·后端·架构
涛涛ing7 分钟前
那些“每个决定都正确”的项目,最后是怎么烂掉的
前端
徐小夕1 小时前
万字长文!DeepSeek Super-agent × 企业知识库架构深度拆解与落地实践
前端·vue.js·github
陈随易1 小时前
TanStarter,从搭建到支付,一步到位开始赚美元
前端·后端·程序员
前端双越老师2 小时前
程序员 1v1 访谈系列第十二期:普通人没有核心竞争力
前端·ai编程·全栈
柳杉2 小时前
没有写一行代码:我用 Codex 制作 了一个 3D 智慧展厅可视化大屏
前端·ai编程·three.js
IT_陈寒2 小时前
Redis开发实战:从入门到精通
前端·人工智能·后端
恋猫de小郭2 小时前
Flutter Impeller Vulkan 内存持续上涨,问题没想到是文字阴影
android·前端·flutter
0xBADCODE2 小时前
2026 强网杯 Web 题 cwp · 全链路复盘
前端·安全·web安全·网络安全·系统安全·ctf
麦麦麦当劳大王11 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript