Vue3中的应该知道的setup

2022年3月30日 301点热度 0人点赞 0条评论

在下方公众号回复【面试宝典】,可获取给你整理的107页前端面试题。

Composition API: setup() The setup() hook serves as the entry point for Composition API usage in components in the following cases: 


1. Using Composition API without a build step; 


2. Integrating with Composition-API-based code in an Options API component. 


1、单文件组件<script setup> 

<script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。相比于普通的 <script> 语法,它具有更多优势:


更少的样板内容,更简洁的代码。 


能够使用纯 Typescript 声明 props 和抛出事件。更好的运行时性能 (其模板会被编译成与其同一作用域的渲染函数,没有任何的 中间代理)。


更好的 IDE 类型推断性能 (减少语言服务器从代码中抽离类型的工作)。 


每个 .vue 文件最多可同时包含一个 <script setup> 块 该脚本会被预处理并作为组件的 setup() 函数使用,也就是说它会在每个组件实例中执行。 


<script setup> 的顶层绑定会自动暴露给模板。 


文件都由三种类型的顶层语法块所组成:<template>、<script>、<style> 以及可 选的附加自定义块

图片

图片

上面的代码可以改成纯hook写法

图片

2、在 <script setup> 中必须使用 defineProps 和 defineEmits API 来声明 props 和 emits ,它们具备完整的类型推断并且在 <script setup> 中是直接可用的 defineProps 和 defineEmits 都是只在 <script setup> 中才能使用的编译器宏。他们不 需要导入且会随着 <script setup> 处理过程一同被编译掉


3、在 <script setup> 中必须使用 defineProps 和 defineEmits API 来声明 props 和 emits ,它们具备完整的类型推断并且在 <script setup> 中是直接可用的 defineProps 和 defineEmits 都是只在 <script setup> 中才能使用的编译器宏。他们不 需要导入且会随着 <script setup> 处理过程一同被编译掉。


4、useSlots 和 useAttrs 这是两个辅助函数,大多数都是在 <template> 中去使用

图片

图片

5、<script setup> 与 <script> 同时存在 每个 .vue 组件最多可同时包含一个 <script setup> 块, <script> 也有且仅一个


6、this不存在 

在 setup() 内部,this 不是该活跃实例的引用,因为 setup() 是在解析其它组件选项之 前被调用的,所以 setup() 内部的 this 的行为与其它选项中的 this 完全不同。这使得 setup() 在和其它选项式 API 一起使用时可能会导致混淆。


7、setup生命周期

图片

因为 setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显式地 定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写。setup中注册生命周期钩子每个钩子函数接受一个回调,当钩⼦被组件调用时,该回调将被执行;


8、当前组件实例 

getCurrentInstance 支持访问内部组件实例,只能在 setup 或生命周期钩子中调用。getCurrentInstance 只暴露给高阶使用场景,典型的比如在库中。强烈反对在应用的 代码中使用getCurrentInstance。请不要把它当作在组合式 API 中获取 this 的替代方案来使用。

 End -



近期课程上新:

Vue基础 | 小程序开发 | JQuery入门 | PC端页面布局  | Typescript  | JS基础运算符 | 数据类型之间存储区别 | 服务端渲染与客户端渲染 | Socket编程




推荐阅读


Kerwin上新 | 千锋《微信小程序》视频教程来了!
为追前端的你,教程千千万万集
Snipaste : 一款截图贴图神器,写东西快到飞起!
整个Webpack5,统统打包给你

图片

44010Vue3中的应该知道的setup

这个人很懒,什么都没留下

文章评论