VUE3 知识点

引入的是一个名为createApp的工厂函数(无需通过new关键字来新建)
app类似于原来的vm,但app比vm更轻
mount  为挂载,只有挂载后才会显示  unmount为卸载 作用相反
vue3中的模板结构可以没有根标签 

setup
            setup是所有组合式api的基础,组件中红所用的数据方法等都要配置在setup中,无需再写data methods等。(个人觉得就有点像普通的js作用域,无需分类啥的)
            两种返回值: 1若返回值为对象,可以在模板里面直接使用。
                                   2若返回一个渲染函数,可以自定义渲染函数   此时模板就会不好使了,渲染函数为主
    vue3中的数据可以在vue2中调用,反之不可以,如果数据出现冲突 以vue3为主 也就是 setup优先。
    setup  不可以使用 async 进行修饰,  因为使用该字符进行修饰就会返回一个promise对象,就返回不出去了

ref函数:
    vue2中的ref就是打标识
    vue3中的ref是一个函数,通过该函数进行加工后的变量变为了RefImpl的实例对象。(引用实现对象、引用对象)
        import {ref} from 'vue'
        let name = ref('李四')
        name.value = '张三'  
        这样才会把数据绑定上
    在模板里面不用使用value属性,因为vue3发现ref对象时,会自动调用value值
    对于将对象实例为ref对象时,ref对象里面就不用在调用value了
    ref对于基本类型数据是使用refimpl来实现的(getter,setter),但是对于引用对象(使用数据劫持实现,Proxy加工为代理对象),使用了vue3中reactive函数。

reactive:定义一个对象类型的响应式对象

总结:绑定响应式对象的时候  基本类型用ref   对象类型用reactive

响应式原理:
    为什么要用reavtive呢,因为如果要对对象内部数据进行操作的时候,如果是vue2需要调用api进行实现,这样的话界面才会更新
    window.proxy
    const p = new Proxy(person ,{此处需要占位 })

    ·通过Proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写、属性的添加、属性的删除等。
    ·通过Reflect(反射):对源、对象和的属性进行操作

ref 和 reactive对比
从定义数据的角度:
    · ref用来定义基本类型数据
    · reactive用来定义对象类型数据
    · ref也可以定于对象类型数据,它内部会通过reative转为代理对象
从原理角度:
    ·ref通过Object.defineProperty() 的get 与 set 实现(数据劫持)
    ·reactive通过使用Proxy来实现响应式(数据劫持),并通过Reflect操作源对象内部数据
从使用角度对比:
    ·ref定义的数据:操作数据需要 .value , 读取数据模板中直接读取不需要 .value
    ·reactive定义的数据:操作数据与读取数据都不需要.value

setup的注意点:
    ·setup的执行时机:在beforecreate之前执行一次。this为undefined,在setup中不可以写this
    ·setup可以接收的参数:
        1--->props
            父组件往子组件发送的数据,
        2--->context
            里面有 attrs(数据捡漏)、emit(自定义时间)、slots(插槽)  


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值