Vue2(生命周期,列表排序,计算属性和监听器)(四)

简介: Vue2(生命周期,列表排序,计算属性和监听器)

三,计算属性computed


计算属性,方法名可以直接在对象中使用.这个属性是通过计算得出的。

这个方法中的任意属性改变,都会触发这个方法

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


下面的示例,我们使用了三种方式:


  • 使用方法实现
  • 使用vue的computed读写方式实现
  • 使用vue的computed只读方式实现


注意:推荐使用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">
        <div>
            <input type="text" v-model="firstName" ><br>
            <input type="text" v-model="lastName" ><br>
            <input type="text" v-model="getFullName()" ><br>
            <input type="text" v-model="fullNameReadOnly" ><br>
            <input type="text" v-model="funName" ><br>
        </div>
    </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:{
            // 只读方式的简写
            fullNameReadOnly(){
                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>


6b09c555561a26318cde26bdfe47f2f2_4d968e86819e4be49100dfd0db78592d.png


四,监视属性watch


<!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">
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    var app = new Vue({
        el:"#app",
        data(){
            return{
                isSunny:true,
                person:{
                    age:18,
                    name:'王导',
                }
            }
        },
        watch:{
            // 表示要对isSunny这个属性进行监听
            isSunny(newVal,oldVal){
                console.log("改变了",oldVal,newVal);
            },
            // 深度监听可以用来监听整个对象的改变,但要慎重使用,因为消耗性能 
            person:{
                deep:true,
                handler(oldVal,newVal){
                    console.log("改变了",oldVal,newVal);
                }
            },
            "person.name"(oldVal,newVal){
                    console.log("我也监听了");
            }
        }
    })
</script>
</html>


6a3538b10de01c1a772e187dae092b4f_c96f24e0e75d42dabc60ddb639b09580.png


最后

送大家一句话: 世界上的好东西都是抢来的,只有弱者才会坐等分配

相关文章
|
1月前
|
缓存 JavaScript
|
2天前
|
JavaScript 前端开发 容器
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
12 1
|
2天前
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
|
2天前
|
移动开发 前端开发
VUE3一种用户可以设置显示隐藏列表内容的方法
VUE3一种用户可以设置显示隐藏列表内容的方法
|
4天前
|
JavaScript
深入理解Vue生命周期钩子及其应用
深入理解Vue生命周期钩子及其应用
5 0
|
4天前
|
缓存 JavaScript 开发者
什么是vue的计算属性?为什么使用?计算属性和方法有什么区别?怎样选择
什么是vue的计算属性?为什么使用?计算属性和方法有什么区别?怎样选择
9 0
|
4天前
|
JavaScript 前端开发
深入理解Vue生命周期钩子及其应用
深入理解Vue生命周期钩子及其应用
7 0
|
5天前
|
缓存 JavaScript
在 Vue 组件中使用计算属性和侦听器来响应路由变化
Vue Router 中,计算属性和侦听器常用于根据路由变化更新组件状态。计算属性缓存依赖,当路由参数改变时自动更新,如示例中的 `userId`。侦听器则监听 `$route` 变化,执行相应操作,例如在 `currentUserId` 示例中响应 `userId` 更新。计算属性适合简单变化,而异步操作或复杂场景可选用侦听器。Vue 3 中,`watchEffect` 减少了部分侦听场景的复杂性。总之,它们用于组件内部响应路由变化,而非直接处理路由逻辑。
12 4
|
17天前
|
JavaScript 前端开发 API
Vue生命周期:在虚拟世界的牵绊与自由
Vue生命周期:在虚拟世界的牵绊与自由
18 1
|
18天前
|
存储 JavaScript 前端开发
【Vue】绝了!这生命周期流程真...
【Vue】绝了!这生命周期流程真...