Vue-9-计算属性的属性

简介: Vue-9-计算属性的属性

计算属性的属性


默认的,计算属性实现了 getter 属性,我们可以直接拿到计算属性的值。但是如果尝试对计算属性的值进行修改,会成功吗?


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


如上,不出意外的在对计算属性进行 setter 操作的时候失败了,Vue 提示我们计算属性 infoc 没有 setter 属性。


实现计算属性的 setter 属性


代码-HTMl


<div id='app2'>
         {{ infoc }}
     </div>
复制代码


代码-JS


<script>
        var app2 = new Vue({
            el: "#app2",
            data: {
                msg1: "hello",
                msg2: "phyger",
                info: "hello phyger"
            },
            watch:{
                msg1: function(){
                    this.info = this.msg1 + ' ' + this.msg2
                },
                msg2: function(){
                    this.info = this.msg1 + ' ' + this.msg2
                }
            },
            computed: {
                infoc:{
                    get: function(){
                        return this.msg1+' '+this.msg2
                    },
                    set: function(newValue){
                        var temInfo = newValue.split(' ')
                        this.msg1=temInfo[0]
                        this.msg2=temInfo[temInfo.length-1]
                    }
                }
            }
        })
    </script>
复制代码


页面效果


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


可以看到,在计算属性中实现 setter 属性后,计算属性已经可以进行赋值操作了。而且在赋值过程中,msg1msg2 的值都发生了变化。


Tip


在计算属性中定义 setter 属性的时候,infoc 已经由原来的方法变成了方法的集合。且默认的 getter 属性也要重新定义。


不定义会如何?


如果不重新定义,则 Vue 对象会由于 Getter 属性的缺失而无法渲染:


<!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">
    <title>Document</title>
    <script crossorigin="anonymous" integrity="sha512-qRXBGtdrMm3Vdv+YXYud0bixlSfZuGz+FmD+vfXuezWYfw4m5Ov0O4liA6UAlKw2rh9MOYULxbhSFrQCsF1hgg==" src="https://lib.baomitu.com/vue/2.6.14/vue.common.dev.js"></script>
</head>
<body>
    <div id="app2">
        {{ infoc }}
    </div>
    <script>
        var app2 = new Vue({
            el: "#app2",
            data: {
                msg1: "hello",
                msg2: "phyger",
                info: "hello phyger"
            },
            watch:{
                msg1: function(){
                    this.info = this.msg1 + ' ' + this.msg2
                },
                msg2: function(){
                    this.info = this.msg1 + ' ' + this.msg2
                }
            },
            computed: {
                infoc:{
                    // get: function(){
                    //     return this.msg1+' '+this.msg2
                    // },
                    set: function(newValue){
                        var temInfo = newValue.split(' ')
                        this.msg1=temInfo[0]
                        this.msg2=temInfo[temInfo.length-1]
                    }
                }
            }
        })
    </script>
</body>
</html>
复制代码


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



将 get 属性的注释去掉


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


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

相关文章
|
28天前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
191 0
|
10月前
|
JavaScript API
Vue3中的计算属性能否动态修改
【9月更文挑战第5天】Vue3中的计算属性能否动态修改
458 10
|
4月前
|
存储 数据采集 供应链
属性描述符初探——Vue实现数据劫持的基础
属性描述符还有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
JavaScript API
vue学习(13)监视属性
vue学习(13)监视属性
154 57
|
10月前
|
缓存 JavaScript
vue学习(12)计算属性
vue学习(12)计算属性
125 60
|
10月前
|
缓存 JavaScript
vue学习(12)计算属性
vue学习(12)计算属性
120 59
|
8月前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
9月前
|
JavaScript API
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
141 1
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
|
10月前
|
缓存 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
|
9月前
|
监控 JavaScript 开发者
在 Vue 中,子组件为何不可以修改父组件传递的 Prop,如果修改了,Vue 是如何监控到属性的修改并给出警告的
在 Vue 中,子组件不能直接修改父组件传递的 Prop,以确保数据流的单向性和可预测性。如果子组件尝试修改 Prop,Vue 会通过响应式系统检测到这一变化,并在控制台发出警告,提示开发者避免这种操作。