vue3的新增介绍

63 阅读3分钟
记录一下自己学习的过程,如有错误,欢迎各位大佬指正

1,watch和watchEffect

两者都是监听器,前者只能对事件源进行监听,需要传入要监听的数据,在监听响应对象属性时,要引入getter,导入对象的属性(比如:watch(()=>y.name,回调函数)),watchEffect是在watch监听数据,需要在回调函数中用到被监听的数据时被使用的,异步被调用的监听器要进行手动的清除(调用watch的返回函数),回调函数的触发时机,一般来说回调函数在vue组件更新前被调用,想要回调函数在vue更新之后被调用,要指明{flush:“post”}

2,ref和reactive,toRef和toRefs

前面的两者是对数据进行响应式处理, ref可以将任何数据类型转变成响应式,修改访问时,要加上.value(ref处理的简单数据类型变成了一个对象,.value用来存储值), reactive是对对象进行响应式处理,toRef和toRefs主要用来对响应式数据进行解构,延续响应式, toRef是生成一个新的数据指向响应式数据(响应式对象的属性),toRefs对响应式对象进行破坏,使其生成的新对象中的每一个属性都变成被ref处理过的响应式数据

3,readonly

是对数据进行处理,让数据变成只读的形式,不能进行修改

4,vue3的生命周期

首先从vue2的created变成了setup的生命周期(组件创建时运行),挂载dom时的生命周期变成了onMounted,响应数据修改时运行的是onUpdated,销毁(onUnmounted),keepalive的周期变成了onDeactived, 两个用来测试的生命周期(onRenderTracked,onRenderTriggered), onRenderTracked状态追踪,去跟踪我们的方法以及变量,在页面update时,生成一个event对象,通过这个对象去查看程序的问题, onRenderTriggered状态触发,给你变化值的信息,将新值和旧值展示出来

5,setup

在vue3的setup中没有this,this为underfined,想要触发一个slot或者emit等,要借用setup的context

6,emits

类型是数组或者对象,数组就是简单的用数组来声明,对象(该对象的每个属性键是事件的名称,值是 null 或一个验证函数)的话(有验证函数)会对传递的数据进行验证,最终返回一个布尔值 穿透(Attributes),非响应式 调用组件上生命的事件,样式或者数据,如果子组件中没有进行接受,这些事件,样式和数据就会作用到子组件的根组件上(只有单根节点的组件才会穿透,多根节点的组件需要手动的进行attrs绑定,vbind="attrs绑定,v-bind="attrs"),js访问attrs的话,直接导入,调用attr函数或者在set(){}的context上的属性($attrs)访问

7,多事件处理

vue3可以在一个标签上绑定两个同事件类型的事件

8,vue3异步组件导入的优化

defineAsyncComponent,异步导入组件

9,suspense

配合异步组件一起使用,自带两个slot,分别是default和fallback两个,顾名思义,当加载的组件不满足状态时,suspense回退到fallback状态,一直到加载组件完毕,才会渲染default 同时可以配合异步的setup使用,以及router-view

10,teleport

内置组件,用来将组件内部的一部分模版传送到该组件的dom上,从而防止css代码难写的问题,避免一些css样式之间的冲突