Vue常用属性(计算属性和侦听器属性)

简介: Vue常用属性(计算属性和侦听器属性)

计算属性computed

  • 方法名可以直接在对象中使用.这个属性是通过计算得出的
  • 这个方法中的任意属性改变,都会触发这个方法

使用场景:希望把一些计算的业务逻辑放在方法中,例如:全名计算、地址计算、购物车合计

名称例子:

此例子中有使用方法实现的,也有计算属性实现的。

推荐使用计算属性的方式。有缓存机制,在页面重复调用多次的情况下,只执行一次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <form>
            姓:<input type="text" v-model="firstName"> 
            名:<input type="text" v-model="lastName"><br>
            方法只读实现:<input type="text" v-model="getFullName()"><br>
            计算属性只读实现:<input type="text" v-model="fullName"><br><!--计算属性直接使用不用带括号-->
            计算属性读写实现:<input type="text" v-model="funName"><!--计算属性直接使用不用带括号-->
        </form>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
     var app = new Vue({
        el: '#app',
        data() {
            return {
                firstName:'史蒂芬',
                lastName:'库里',
            }
        },
        methods:{
            //只读方式-方法中
            getFullName(){
                return this.firstName+"-"+this.lastName;
            },
        },
        computed:{
            //只读方式-计算属性中
            fullName(){
                return this.firstName+"-"+this.lastName;
            },
            //读写方式
            funName:{
                get(){
                    return this.firstName+"-"+this.lastName;
                },
                set(value){
                    this.firstName=value.split("-")[0];
                    this.lastName=value.split("-")[1];
                }
            },
        },
    });
</script>
</html>

浏览器实现:

性和名输入:

姓和名改的话后面都会跟着一起改

只读输入:

只读的实现其他的却不会跟着一起改,还会有浏览器报错的情况出现

读写输入:

读写实现其他的也是可以一起跟着改,但是计算属性一般只有只读的,读写使用的不多

侦听器属性watch

  • 被侦听的属性发生改变时,调用回调函数,执行相关操作
  • 侦听属性须存在才能进行侦听

使用场景:当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的,例如:需要对修改前后的数据操作、名称修改

练习例子:

此次例子不需要HTML代码演示,但是HTML代码要写个div盒子绑定el,要不浏览器会报错

<script src="../js/vue2.7.js"></script>
<script>
     var app = new Vue({
        el: '#app',
        data() {
            return {
                isSunny:true,
                person:{
                    name:"小明",
                    age:18
                }
            }
        },
        watch:{
            //表示要对isSunny这个属性进行侦听
            isSunny(newVal,oldVal){
                console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
            },
            //深度侦听可以用来监听整个对象的改变,但要慎重使用,因为消耗性能
            person:{
                immediate:true,    //开启初始化调用
                deep:true,        //开启深度侦听
                handler(newVal,oldVal){
                    console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
                }
            },
            // 侦听复杂数据的某个属性,这也是一种简写方式
            "person.name"(newVal,oldVal){
                console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
            }
        }
    });
</script>

浏览器实现:

属性侦听:

最常用的一种侦听,可以拿到修改前后的数据

对象侦听:

immediate初始化属性:网页刷新自动执行一遍此监听。

deep深度侦听属性:用来侦听整个对象的改变,没有这个属性,就不能对对象进行侦听。

但要慎重使用,因为太消耗性能;而且修改前的对象和修改后的对象数据一样,应该是个bug可能在以后的Vue版本会对其进行修复。

对象中的属性侦听:

如果要侦听对象,建议使用这种方式;

因为name是person对象中的数据,所以对象侦听也执行了

6d7223183ee74c96b51e72677d79821f.png

相关文章
|
3月前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
4月前
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
259 0
|
2月前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
161 1
|
17天前
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
21天前
|
监控 JavaScript 前端开发
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
78 12
|
17天前
|
JavaScript 前端开发 开发者
Vue中的class和style绑定
在 Vue 中,class 和 style 绑定是基于数据驱动视图的强大功能。通过 class 绑定,可以动态更新元素的 class 属性,支持对象和数组语法,适用于普通元素和组件。style 绑定则允许以对象或数组形式动态设置内联样式,Vue 会根据数据变化自动更新 DOM。
|
18天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。
|
1月前
|
JavaScript 安全 API
iframe嵌入页面实现免登录思路(以vue为例)
通过上述步骤,可以在Vue.js项目中通过 `iframe`实现不同应用间的免登录功能。利用Token传递和消息传递机制,可以确保安全、高效地在主应用和子应用间共享登录状态。这种方法在实际项目中具有广泛的应用前景,能够显著提升用户体验。
113 8
|
1月前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
85 1
|
3月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
116 58

热门文章

最新文章