vue3 文档提炼总结

93 阅读3分钟

1、组合式与选项式

  • 选项式:和 vue2 一样。例如像 datamethods 这些定义的属性全在函数内部 this 上,this 指向组件实例。
  • 组合式:新模式。在 <script setup>标签上加一个 setup,接着整个 <script> 就在 生命周期 created 之前蹦跶了。

2、更新时机

vue 会自动将所有需要更新的响应式状态缓存,确保只进行一次集体更新,虚拟 dom 的思路。 如果需要等更新后再操作,可考虑 nextTick() Api。

3、ref 和 reactive

同样是作为响应式对象的实现,ref 弥补了 reactive 的不足。

  1. 解决了响应式解绑的问题。
  2. 扩大了响应式绑定的数据类型。

4、computed 计算属性

最大的作用仅在于依赖于响应式的状态,来返回某值。并且提供缓存机制,仅在依赖项更新才触发重新计算。用处不大。

5、v-if 与 v-show 区别

<template>可以用 v-if ,不能用 v-show。 v-if 切换开销大(重排),v-show 初始渲染开销大(重绘)。

6、生命周期

vue 的生命周期分为:beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeUnmountunmounted
而对于组合式的 vue 来说,setup 里面编写的代码是直接运行在 created 生命周期的。

7、监听器 watch 与 watchEffect

都是用作监听状态变化后,执行回调函数。不同点在于:

  1. watchEffect 在初始化的时候便会执行。
  2. watch 主要针对监听的是我们输入的具体数据源,也就是第一个参数。而 watchEffect 是会自动追踪回调函数里面的一切响应式依赖。

8、父与子组件通信

  1. propsemit 联合使用。可用在选项式 api 以及并没有设置 setup 的组合式组件。
  2. defineExpose 子组件暴露其属性给父组件。父组件通过设置 ref 在页面挂载后获取子组件属性。
  3. defineProps 是子组件获取父组件的值。
  4. defineEmits 是父组件获取子组件抛出的方法。
  5. slot 插槽的传递。
  6. provideinject,这个更适合用于多层级传递。

9、动态组件

通过 <component :is"xxx"> 来切换 vue 组件。一般情况下切换掉的组件会被卸载,可用 <keep-alive> 缓存。

10、双向绑定响应式数据 与 单向数据流

vue 的最大优势便是在于做了数据的双向绑定,但这也仅仅只是参考,因为它还是有了 ref 这个能直接操作 dom 树的存在。
而单向数据流其实只是告诉你,我们不应该在子组件去修改父组件传来的值,然而实际上,也只是个君子协议罢了。

11、组合式函数

可以简单理解为 react hooks。复用纯逻辑,可传入响应式变量。

12、自定义指令 与 插件

可以通过,app.directive(名字,执行函数) 进行全局设定,方便直接进行 dom 操作。也可以直接设置在当前组件使用,不过一般都是前者居多。 插件则是通过返回一个带有 install 属性的一个函数,再通过 app.use(插件名) 贯通到全局上。

13、官方提供组件

  • <Transition>:过度动画,一般只涵盖单个组件或者单个元素。多个的可用 <TransitionGroup>
  • <KeepAlive>:可以让组件保持存活,不卸载。一般与动态组件 <component> 搭配。
  • <Teleport>:简单来说就是弹窗专业户。
  • <Suspense>:辅助处理异步加载组件。