vue3——setup

setup是所有Composition API(组合API)“表演舞台”
组件中所用到的:数据、方法等等,均要配置在setup中
setup函数的两种返回值:

  • 若返回一个对象,则对象中的属性、方法,在模板中均可直接使用
  • 若返回一个渲染函数:则可以定义渲染内容 需引入import {h} from ‘vue’ (不常用)
    例如
 import {h} from 'vue'
 export default {
   name: 'App',
   setup(){
     let name = '啊O'
     let age = 18
     function sayHello(){
       alert(`我叫${name},我${age}岁了,你好啊`)
     }

     // 返回一个对象(常用)
     return {
       name,
       age,
       sayHello
     }

     // 返回一个函数(渲染函数)
     // return ()=>{return h('h1','hello Word')}
   }
 }
<template>
<!-- vue3中的组件节点可以没有根标签 -->
  <h1>一个人的信息</h1>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <button @click="changeInfo">修改人的信息</button>
</template>

注意

  • vue2配置(data、methods、computed……)可以访问- vue3 setup中的属性、方法
  • 但在setup中不能访问到vue2的配置
  • 如有重名setup优先
    setup不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性
### Vue3 `setup` 函数使用指南 #### 基本概念 `setup` 函数是 Vue 3 Composition API 的核心组成部分,允许开发者更灵活地组织和复用逻辑代码[^2]。 #### 生命周期钩子 Vue 3 提供了一系列以 `on` 开头的新生命周期钩子函数,如 `onMounted`, `onUpdated` 等,在 `setup` 函数内可以方便地使用这些钩子来精确控制组件行为。例如: ```javascript import { onMounted } from &#39;vue&#39; export default { setup() { onMounted(() => { console.log(&#39;组件已成功挂载&#39;) }) return {} } } ``` 此段代码展示了如何监听组件挂载事件并执行相应操作[^1]。 #### 参数解析 `setup` 接收两个参数:`props` 和 `context`。其中 `props` 表示由父组件传递过来的数据;而 `context` 则是一个包含了额外信息的对象,具体来说有三个字段——`attrs`(未声明为 prop 的属性)、`slots`(插槽内容)以及 `emit`(触发自定义事件的方法)。这有助于更好地处理来自外部的信息流。 #### 数据与方法定义 为了模拟 Options API 下的 `data()` 及 `methods` 特性,在 `setup` 中可以通过响应式变量或函数的形式来进行相同的操作。比如创建一个简单的计数器应用: ```typescript <script lang="ts"> import { ref, defineComponent } from &#39;vue&#39;; export default defineComponent({ setup() { const count = ref(0); function increment() { count.value++; } return { count, increment }; }, }); </script> ``` 上述例子中通过 `ref` 创建了一个可变状态 `count` 并暴露出去以便模板访问,同时也提供了一个修改该状态的方法 `increment`[^4]。 #### TypeScript 支持 对于希望获得更好开发体验特别是类型安全性的项目而言,可以在 `<script>` 标签上加上 `lang="ts"` 属性,并安装合适的编辑器插件如 Volar 来增强 IDE 对于 `.vue` 文件内的 TypeScript 语法的支持效果最佳[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值