vue3.x的setup语法糖

简介: vue3.x的setup语法糖

什么是setup语法糖

vue3.0时setup的变量需要return暴露出来,template才能获取。到3.2之后只需要在script标签中添加setup,例如script setup组件中不在需要特殊注册,直接引入,属性和方法便不需返回,在script setup中自定义的属性、指令可以直接在template使用。
setup参数
使用 setup 函数时,它将接收两个参数:
1.props
2.context
Props
setup 函数中的第一个参数是 props。正如在一个标准组件中所期望的那样,setup 函数中的 props 是响应式的,当传入新的 prop 时,它将被更新。

特别注意:因为 props 是响应式的,你不能使用 ES6 解构,它会消除 prop 的响应性。

如果需要解构 prop,可以在 setup 函数中使用 toRefs 函数来完成此操作:

import {
    toRefs } from 'vue'
setup(props) {
   
  const {
    title } = toRefs(props)
  console.log(title.value)
}

如果 title 是可选的 prop,则传入的 props 中可能没有 title 。在这种情况下,toRefs 将不会为 title 创建一个 ref 。你需要使用 toRef 替代它:

import {
    toRef } from 'vue'
setup(props) {
   
  const title = toRef(props, 'title')
  console.log(title.value)
}

Context
传递给 setup 函数的第二个参数是 context。context 是一个普通 JavaScript 对象,暴露了其它可能在 setup 中有用的值:

export default {
   
  setup(props, context) {
   
    // Attribute (非响应式对象,等同于 $attrs)
    console.log(context.attrs)
    // 插槽 (非响应式对象,等同于 $slots)
    console.log(context.slots)
    // 触发事件 (方法,等同于 $emit)
    console.log(context.emit)
    // 暴露公共 property (函数)
    console.log(context.expose)
  }
}

context 是一个普通的 JavaScript 对象,也就是说,它不是响应式的,这意味着你可以安全地对 context 使用 ES6 解构。

setup(props, {
    attrs, slots, emit, expose }) {
   
    ...
  }
相关文章
浅谈一下Nuxt3中的layouts
继上一篇文章([nuxt3目录及使用 - 掘金 (juejin.cn)](https://juejin.cn/post/7199265829954715685))之后,我们继续学习Nuxt的相关使用。 # layouts 这次我们先引入一个layouts目录,这个目录是做什么的呢?我们在下面的使用中说清楚。 我们先在根目录下新建一个`layouts`目录,然后我们在`layouts`目录下新建一个`layout1.vue`文件,然后我们开始使用一下神奇的`layouts`。 内容如下: ``` <template> <header> <h1>
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
JavaScript
【Vue面试题十四】、说说你对vue的mixin的理解,有什么应用场景?
这篇文章详细介绍了Vue中`mixin`的概念、应用场景和源码分析,解释了`mixin`如何用于代码复用、功能模块化,并通过实际代码示例展示了在Vue组件中局部混入和全局混入的使用方式。
【Vue面试题十四】、说说你对vue的mixin的理解,有什么应用场景?
|
UED
理解服务中数据驱动及实现方式
【6月更文挑战第15天】本文介绍数据驱动设计强调通过分析用户行为和反馈来指导设计决策,减少个人偏见。通过识别关键领域、设定具体目标、形成可验证的假设,设计师可以使用数据来优化CTA转化率、降低跳出率等关键指标。数据分为定量和定性两种,用于衡量设计更改的效果。这种方法已被证实能提升转化率和销售额,同时平衡创新与用户体验。
538 3
理解服务中数据驱动及实现方式
|
缓存 JavaScript 前端开发
深入理解 Vue 3 的 Composition API 与新特性
本文详细探讨了 Vue 3 中的 Composition API,包括 setup 函数的使用、响应式数据管理(ref、reactive、toRefs 和 toRef)、侦听器(watch 和 watchEffect)以及计算属性(computed)。我们还介绍了自定义 Hooks 的创建与使用,分析了 Vue 2 与 Vue 3 在响应式系统上的重要区别,并概述了组件生命周期钩子、Fragments、Teleport 和 Suspense 等新特性。通过这些内容,读者将能更深入地理解 Vue 3 的设计理念及其在构建现代前端应用中的优势。
455 1
深入理解 Vue 3 的 Composition API 与新特性
|
JavaScript 前端开发 编译器
Vue3基础(26)___defineProps、defineEmits、defineExpose、defineModel组件通信、defineOptions
本文介绍了Vue 3中`<script setup>`语法糖的使用,以及如何在Vue 3的组合式API中使用`defineProps`、`defineEmits`、`defineExpose`和`defineModel`进行组件通信和属性暴露。同时,还解释了`defineOptions`的作用,它可以用来配置组件的选项,例如禁用属性的自动继承。
1279 2
|
JavaScript IDE API
vue3中的单文件组件<script setup>和setup函数区别 详解(一)
vue3中的单文件组件<script setup>和setup函数区别 详解
783 0
|
JavaScript 前端开发
JS常用数据类型转换(数字型和字符串型之间转换)
JS常用数据类型转换(数字型和字符串型之间转换)
452 2
|
JavaScript
Vue 父子组件传参、插槽
Vue 父子组件传参、插槽
174 2
|
编译器
vue3组件TS类型声明实例代码
vue3组件TS类型声明实例代码
256 0