二、vue3中的计算属性和侦听器以及过滤器

1.计算属性

vue3中可以继续使用vue2的语法,但是主要是可以用组合式api去写。

1.vue2写法

 export default {
   data() {
      return {
        phonename:'华为手机',
        price:5000
      }
    },
   methods: {
     updateName(){
      this.phonename = '苹果手机'
    }
  },
  computed:{
    // 计算属性在定义的时候是方法,里面返回结果
    // 在使用时,是当做属性在用
    // phoneInfo(){
    //   return this.phonename+'-'+this.price
    // },
    // 如果计算属性需要修改,要定义完整形式
    phoneInfo:{
      get(){
        return this.phonename+'-'+this.price
      },
      set(val){
        let arr = val.split('-')
        this.phonename = arr[0]
        this.price = parseInt(arr[1])
      }
    }
  } 
}

 2.组合式api写法

// 导入组合式API
import {computed, ref} from 'vue'
export default {
  // vue3目前推崇的是组合式API写法
  setup() {
    // 定义数据
    const phonename = ref('华为手机')
    const price = ref(5000)
    //定义方法
    const updateName = ()=>{
      phonename.value = '苹果手机'
    }
    //定义计算属性
    // 定义只读的计算属性
    // const phoneInfo = computed(()=>{
    //   return phonename.value+'-'+price.value
    // })
    // 定义可写的计算属性
    const phoneInfo = computed({
      get(){
        return phonename.value+'-'+price.value
      },
      set(val){
        let arr = val.split('-')
        phonename.value = arr[0]
        price.value = parseInt(arr[1])
      }
    })

    //返回模板中要用的数据
    return {
      phonename,
      price,
      updateName,
      phoneInfo
    }
  }
}

2.侦听器

// 引入组合式API watch 和 watchEffect
import {ref,reactive, watch, watchEffect} from 'vue'

export default {
// Vue3中的侦听器
    setup() {
        let money = ref(10000)
        let stu = reactive({
            name:'张三',
            age:20,
            car:{
                name:'奔驰',
                price:50
            }
        })

        // watch方法的参数分别是:
        // 第一个参数:监视的成员
        // 第二个参数:回调函数
        // 第三个参数:配置对象 (可以省略)
        // 简单用法:一上来没有立刻执行
        // watch(money,(nval,oval)=>{
        //     console.log(nval,oval);
        // })
        // 完整用法:加上第三个参数,配置对象
        watch(money,(nval,oval)=>{
            console.log(nval,oval);
        },{
            //立刻执行
            immediate:true,
        })

        // 监视reactive的数据,默认就开启深度监视,并且无法关闭
        // watch(stu,(nval,oval)=>{
        //     console.log(nval,oval);
        // })

        // 对于reactive的数据,可以采用监视部分属性
        // 监视对象身上的属性,推荐用下面的方式
        watch(()=>stu.name,(nval,oval)=>{
            console.log(nval,oval);
        })

        // 如果监视的是reactive里面的对象属性,默认是不开启深度监视的,需要手动开启
        watch(()=>stu.car,(nval,oval)=>{
            console.log(nval,oval);
        },{
            deep:true
        })

        //watchEffect监听器,只有一个回调函数参数,并且没有参数
        // 特点:
        // 1.默认会执行一次
        // 2.不需要明确监视谁,回调函数里面用到了谁,谁变了,就会重新执行回调函数。
        watchEffect(()=>{
            console.log('我是watchEffect');
            let m = money.value
            let name = stu.name
        })

        return{
            money,
            stu
        }
    }
};

3.过滤器

Vue3推荐我们使用方法或计算属性的方式,实现之前过滤器的效果,所以vue3移除了过滤器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值