vue - 计算属性 - 侦听器 - 过滤器

目录

什么是计算属性

什么是侦听器  

过滤器


什么是计算属性

 计算属性是定义在 computed 节点之下的

它的值是基于其它数据属性计算的,还会进行缓存,只有依赖的属性变化后才会重新计算

可以把这个理解为对数据的包装,对数据进行计算和处理而提供新的数据

data(){
    return{
        messgae: 'Hello',
        firstName: 'zs',
        lastNAme: 'ls'
    }
},
computed:{
    //依赖messgae
    reversedMesg(){
        return this.message.split('').reverse().join('')
    },
    //依赖firstName和lastNAme
    fullName(){
        return this.firstName + ' '+ this.lastName
    }
}

在模板中就像使用普通属性一样

<p> {{reversedMesg}} </p>
<p> {{fullName}} </p>

当message、firstName、lastName发生变化时, reversedMesg和fullName会自动更新它的值

计算属性的缓存机制可以确保在需要时进行计算,提高性能

什么是侦听器  

一种用于观察和相应数据变化的机制,想使用侦听器,先声明一个或多个侦听器。

侦听器分为 方法格式的侦听器、对象格式的侦听器、深度侦听

方法格式的侦听器

用于监听单个属性的变化,监听哪个数据变化就把哪个数据作为方法名 新值在前旧值在后

data(){
    return{
      username: '', //当需要监听username的时候
    }
},
 
watch:{
    //监听 username 的数据变化
    //newVal当前的数据 oldVal之前的数据 
    username(newVal,oldVal){
       console.log("新值:"+newVal,"旧值:"+oldVal);
    }
}

对象格式的侦听器  

监听对象内部属性的变化 

data:{ 
     user{
         username: 'admin',
         age: 20
      }    
},
watch:{
    //定义对象格式的侦听器
    user: {
       //侦听器的处理函数
       handler(newVal,oldVal){
          console.log("新值:"+newVal,"旧值:"+oldVal);
       },
       //为true时进入页面直接触发
       immediate: true,
       //为true时,vue会遍历递归对象内部的属性,监听它们的变化
       deep: true
    },
   //如果要监听是对象的子属性的变化 就用单引号包裹
  'user.username'(newVal,oldVal){
       console.log("新值:"+newVal );
   },
}

 深度侦听 

深度侦听用于监听对象内部属性的变化,包括嵌套对象和数组 

 data:{ 
   info:{
      username: 'admin',
   }
},
watch:{
  //定义对象格式的侦听器
  info: {
     //侦听器的处理函数
     handler(newVal){
        console.log("新值:"+JSON.stringify(newVal) );
     },
     //开启深度监听 只要对象中任何一个属性变化都会触发监听器
     deep: true
  }
}

过滤器

用于对数据进行格式化和处理的功能。可以在输出前对数据进行转换,

过滤器有两种使用方式 分为私有过滤器全局过滤器

私有过滤器是定义在Vue组件内部的,在 filters 组件下定义

全局过滤器是定义在Vue实例或Vue应用的全局范围内的过滤器,可在任何组件中使用

<div id="app">
      <!-- 过滤器用法 -->
      <h1>{{message | capi}}</h1>
                
      <h1>{{message | capi}}</h1>
</div>


//定义全局过滤器
Vue.filter('capi',function(str){
    const first =str.charAt(0).toUpperCase()
    const other = str.slice(1)
    return first + other + '全局';
})

export default{
    data: {  
        message: 'hello Vue!',
    },
    //私有过滤器
    filters: {
        capi(value) {
            //过滤器中一定要有返回值
            //charAt获取索引值 toUpperCase把获取的值转换成大写
            const first =value.charAt(0).toUpperCase()
            //slice截取索引后面的所有值
            const other = value.slice(1)
            return first + other + '私有';
         }
    },
}

过滤器的好处: 代码重用、代码简洁、可维护性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝夕相伴で

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值