VUE3 知识点2

watch:
    第一个参数为:监视的对象   第二个参数为回调函数  第三个参数为配置信息  例如 immediate
    watch(sum , ()=>{} , {immediate : true})
    (1)监视ref定义的一个响应式数据
        watch('nane' , (newValue , oldValue)=>{

        })
    (2)监视ref定义的多个响应式数据
        watch('[name,...]' , (newValue , oldValue)=>{
            //这里面的newValue和oldValue都为数组类型对象,其中的index值与第一个参数的index相对应
            newValue 数组有两个成员  第一个为相对应的index值  第二个为改变后的值   oldValue 同理
        })
    (3)监视reactive定义的多个响应式数据,注意:此处无法正确的获取oldValue
        watch (person , (newValue ,oldValue)=>{

        })
    (4)监视reactive定义的响应式数据中的某一个属性,此时newValue好使   此时可以获取正确的newValue
        watch(()=>person.age , (newValue , oldValue) => {

        })
    (4)监视reactive定义的响应式数据中的某些属性,此时newValue好使
        watch([()=>person.age , ()=>person.age] , (newValue , oldValue) => {

        })
    (5)特殊情况,监视reactive定义的响应式数据中的属性,且该属性是多层级的,则需要开启深度监视
        watch(()=>person.age , (newValue , oldValue) => {

        },{deep : true})

    存在的坑:newValue 和 oldValue为相同的值,现在仍没有解决测试过了。
            如果对象存在的层级较多的时候,只要是reactive定义的无论多深都可以监视到,且无法关掉深度监视(deep配置无效),个人认为这是reactive所导致的。
            如果监视的是基础类型的数据,newvalue好使,但是如果监视的是reactive的对象类型,newvalue不好使。其中监视reactive的某一属性时,该属性为基本数据类型,从根本来说,也是监视基础类型的数据,所以newValue好使
            如果直接监视的是reactive定于的对象,是直接深度的。如果监视的是reactive定义的对象的属性,且该属性多层级,则需要开启深度监视。

            个人理解:为什么监视对象的时候不好使呢,可能底层源码监视对象的时候,监视的是对象的地址值,而不是对象地址所指向的基本数据类型的值。一旦配置deep深度监视后,就不再监视地址了。
                    监视reactive对象的时候,默认开启深度监视。但是监视普通对象的时候需要开启深度监视。
watchEffect函数
    ·默认开启immediate
    也是做监视用的,但是不用指明对象,只要在回调函数里面使用,就会智能地区检测用到的数据。 
    watchEffect(()=>{
        //里面用到了哪些属性就监视那些属性(所依赖的数据)
    })

    watchEffect有点像computed,但是其注重过程不用写返回值。一般用于一些报销流程啊,发票啊什么的。

生命周期:
    没啥较大的改变,就是在一开始的时候更加智能,只有万事俱备,配置完毕后才会继续往下走,不会像vue2的时候新建后就往下走。
    通过配置项的形式写生命周期钩子,beforeCreate  vreate  不具有组合式API   setup就相当于二者

    vue3的最大特点,组合式API

hook函数:
    本质是一个函数
    其实就是一个存放各种方法的文件夹,将可以复用的各种方法放进去。 
    将setup中组合API在hooks中进行封装。使代码更简单。

toRef(特别重要)
    创建一个ref对象,其value值指向另一个对象中的某一个属性。
    第一个参数:那个对象,第二个参数,那个属性(要用字符串) 
    该函数不是新创建一个ref对象,是将你要用的数据转化为ref对象并且和元数据进行绑定。
    可以把数据属性拆散出去,并且是响应式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值