Vue-6-计算属性

简介: Vue-6-计算属性

什么是计算属性


理论上在模板的插值表达式中,我们可以进行简单运算,但是在模板表达式中加入太多的逻辑,会让模板太复杂不方便维护。


实践


demo1


当我们想要根据出生年份来计算年龄的时候,我们可以这样做:


代码-HTML


<div id="app1">
       phyger的年龄是多少?
       <br>
       {{ 2021-Number(birth) }}
    </div>
复制代码


代码-JS


<script>
        var integer
        var app = new Vue({
            el: "#app1",
            data: {
                birth: 1992
            }
        })
    </script>
复制代码


页面效果


网络异常,图片无法展示
|


如上,2001 年出生的孩子,今年应该是 20 岁。


以上方式,我们在模板插值表达式中进行了计算,现在我们使用 Vue 的计算属性来对它进行替代。


代码-HTML


<div id="app1">
       phyger的年龄是多少?
       <br>
       {{ age }}
    </div>
复制代码


代码-JS


<script>
        var integer
        var app = new Vue({
            el: "#app1",
            data: {
                birth: 1992
            },
            computed: {
                age: function(){
                    return 2021-this.birth
                }
            }
        })
    </script>
复制代码


页面效果


网络异常,图片无法展示
|


demo2


根据出生日期计算年龄。


代码-HTML


<div id="app1">
   根据出生年份计算年龄!
   <input type="datetime" v-model="birth"/>
   <br>
   {{ age }}
  </div>
复制代码


代码-JS


<script>
        var app = new Vue({
            el: "#app1",
            data: {
                birth: 1992
            },
            computed: {
                age: function(){
                    console.log('computed start...')
                    return 2021-this.birth
                }
            },
        })
    </script>
复制代码


效果

网络异常,图片无法展示
|


问题


如果我们使用一个非响应式的对象,比如 Data,那么当 Vue 的属性发生变化时,这个非响应式的对象会变吗?


代码-HTML


<div id="app1">
   根据出生年份计算年龄!
   <input type="datetime" v-model="birth"/>
   <br>
   {{ age }}
  </div>
复制代码


代码-JS


<script>
    const nowDate = new Date();
        var app = new Vue({
            el: "#app1",
            data: {
                birth: 1992
            },
            computed: {
                age: function(){
                    console.log('computed start...')
                    //return 2021-this.birth
          return nowDate.getSeconds()
                }
            },
        })
    </script>
复制代码


效果


你会发现,当输入框的值发生变化的时候,Vueage 属性未发生变化。


网络异常,图片无法展示
|


网络异常,图片无法展示
|


具体原因我们下节继续分析。

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
3月前
|
JavaScript API
Vue3中的计算属性能否动态修改
【9月更文挑战第5天】Vue3中的计算属性能否动态修改
289 10
|
1月前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
2月前
|
JavaScript API
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
62 1
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
|
2月前
|
监控 JavaScript 开发者
在 Vue 中,子组件为何不可以修改父组件传递的 Prop,如果修改了,Vue 是如何监控到属性的修改并给出警告的
在 Vue 中,子组件不能直接修改父组件传递的 Prop,以确保数据流的单向性和可预测性。如果子组件尝试修改 Prop,Vue 会通过响应式系统检测到这一变化,并在控制台发出警告,提示开发者避免这种操作。
|
3月前
|
缓存 JavaScript 前端开发
vue-day02计算属性,v-bind,v-if,v-for
文章介绍了Vue.js中的计算属性、class与style的绑定、条件渲染和列表渲染的使用。通过示例代码展示了如何使用计算属性简化模板逻辑、如何通过v-bind动态绑定class和style、如何使用v-if进行条件渲染以及如何使用v-for进行列表渲染。这些特性使得Vue.js在构建动态用户界面时更加灵活和强大。
vue-day02计算属性,v-bind,v-if,v-for
|
2月前
|
JavaScript 前端开发 开发者
VUE学习一:初识VUE、指令、动态绑定、计算属性
这篇文章主要介绍了Vue.js的基础知识,包括初识Vue、指令如v-for、v-on的使用、动态属性绑定(v-bind)、计算属性等概念与实践示例。
65 1
|
2月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
28 1
|
2月前
|
缓存 JavaScript
|
2月前
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
128 0
|
3月前
|
JavaScript
vue 计算属性,实现复选框的全选和反选 【小案例】
本文通过一个Vue.js小案例,展示了如何使用计算属性实现复选框的全选和反选功能。计算属性的完整写法包括get和set两部分,分别用于获取值和设置值。在全选和反选的场景中,计算属性的get方法用于判断所有复选框是否都已选中,从而控制全选复选框的状态;计算属性的set方法则用于根据全选复选框的状态,批量更新每个复选框的选中状态。通过示例代码和效果图,文章清晰地说明了计算属性在实现这一功能中的作用和效果。
vue 计算属性,实现复选框的全选和反选 【小案例】