- ref(支持所有类型),reactive(ts泛型约束,只支持引用类型object,Array,Map,Set)
- ref与shallowRef不要一起使用,容易产生赋值错误。
4. ref取值,赋值都需要加.value,reactive是不需要.value.
5. 自定义ref(customRef)如下:
7. reactive (proxy)不能直接赋值,负责破坏响应式对象。解决方案:数组可以使用push加解构或添加一个对象,数组作为这个对象的一个属性去解决。
8. shallowReactive也是浅层修改对象属性,更深层次无法改变值,可以通过triggerRef触发更新机制。
9. toRef()两个参数(对象,该对象某个属性)只能修改响应式对象的值,非常响应式试图毫无变化。应用场景:useRefDemo(toRef(obj,obj.property)
10. toRefs可以去解构响应式reactive的值。
11. toRaw可以去改变响应式数据为原始对象。
12. computed用于某些依赖做一些计算。
13. v-memo vue3.2新增的指令要是可以
缓存 期望的类型是个数组any[],该指令需要传入一个固定长度的依赖值数组进行比较。如果数组里的每个值都与最后一次的渲染相同,那么他的更新将会被跳过,甚至虚拟 DOM 的 vnode 创建也将被跳过,提升了性能。配合v-for 属于最常见的情况,但是只有助于大数据量的情况例如(1000条以上)
14. watch(三个参数)可以对ref或reactive的值做监听,当需要深度监听时reactive数据不需要加deep:true,立即执行增加immediate:true,组件执行之前增加flush: 'pre',组件执行之后plush: 'post',组件同步执行plush: 'sync',ref需要加。如果需要监听某个对象的属性,watch第一个参数可以通过函数返回需要监听的属性值
15. 生命周期 没有beforeCreate, created这两个周期,setup语法糖去代替。onBeforeMount读取不到dom,onMounted读取到dom.
16. defineProps 用于父子组件传递,如果ts的话可以用withDefaults(defineProps({}),{property: 默认值})声明默认值。子组件可以通过defineExporse()暴露给父组件一些东西,给父组件事件传值方法:defineEmits([]),如果ts的话
- 局部组件与全局组件,全局组件可以在main.js里通过component(组件名称,组件)注册全局。
- 自定义hooks使用vueuse丰富的自定义hooks库(也可以作为性能优化一种方式)。
- tab切换:路由,v-show,component如下:(解决了警告提示_skip_,节约了渲染性能)
16. 插槽v-slot:组件名,简写#组件名(匿名。具名)
17. 动态插槽
18. 异步组件&代码分包&suspense(应用场景:骨架渲染)如下:注意(异步组件加载必须使用suspense内置组件括起来,使用插槽方式渲染组件,fallback:加载前,default:加载后),代码分包(凡是import函数引入的都会做代码拆解,利用异步组件加载方式可以做一些性能优化,比如首页加载速度)
19. Teleport vue3新特性,可以将模版代码渲染到任何一个制定的dom节点,但让其不受父级的影响。(两个属性disabled,to(接受元素选择器class,id,标签选择器等))
20. keep-alive内置组件用于缓存组件包含属性includes,demo如下:(只缓存A组件),max属性缓存组件数量(通过算法活跃度高的组件缓存),开启keep-alive缓存后增加两个声明周期(onActivated,onDeactivated)后onMounted只执行一次,onActivated执行多次。
21. transition动画内置组件包含name属性,生命周期8个。
22. transition-group过度列表组件包含tag属性指定列表父级外层元素,其余基本跟transition组件一致。如下:
23. provide,inject提供依赖注入实现深度嵌套组件之间数据传递(子组件也可以修改父和爷的值)。
24. nextTick更新数据如下:
25. unocss原子化css可以减少css体积大小,提高复用性,减少起名复杂度。
26. webworker,海量数据虚拟列表方式加载。
27. proxy代理解决跨域如下:
28. pinia数据状态管理(优点:action可以直接修改state,没有模块化概念,书写更简洁)
28. vue-router(hash,history,导航守卫)
29. 自定义指令directive
30. 插槽样式:slotted(class名),全局选择器(:global(选择器)),动态css(样式value使用v-bind(变量)),