【Vue】计算属性 与 监视属性

计算属性

        要用的属性不存在,要用已有的属性计算得来

        借助了Object.defineProperty方法提供的setter与getter

        与methods实现相比,内部有缓存机制,效率更高,调试方便

    <div id="app">
        姓:<input type="text" v-model="firstname"> <br>
        名:<input type="text" v-model="lastname"> <br>
        全名: {{fullname}} 
    </div>
    <script>
        new Vue({
            el:'#app',
            data(){
                return{
                    firstname: "小猪",
                    lastname:"佩奇"
                }
            },
            computed:{
                fullname(){
                    return this.firstname + '-' + this.lastname
                }
            }
        })
    </script>

监视属性

        当被监听的属性发生改变时,回调函数自动调用

  • handler(newValue, oldValue)   当其属性改变时触发
  • immediate:true       初始化时,让handler调用一下
  • deep:true                监测对象内部值改变(多层)

         vue中的watch默认不监视对象值内部的变化(一层)

深度监视

    <div id="app">
        <h1>今天的天气很{{info}}</h1>
        <button @click="isHot = !isHot">点击切换天气</button>
    </div>
    <script>
        const vm = new Vue({
            el:'#app',
            data(){
                return{
                    info: false,
                }
            },
            watch:{
                // 监视多级结构中某个属性的变化
                'number.a':{
                    handler(){
                        console.log('a改变了');
                    }
                },
                // 监视多级结构中所有属性的变化
                number:{
                    deep: true,
                    handler(){
                        console.log('number改变了');
                    }
                }
            }
        })
    </script>

简写

        当不使用immediate、deep方法时,函数当作handler方法写

watch:{
    isHot(){
        ....
    }
}
vm.$watch("isHot", function(){
    ...
})

计算属性与监听属性的区别

    1.computed能完成的功能,watch都可以完成

    2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值