使用Composition API和setup语法糖重构Vue组件

167 篇文章 3 订阅
72 篇文章 11 订阅

Vue3 引入了Composition API。它是一种更灵活的方式来组织和复用组件的逻辑,而不是依赖于传统的选项式API(如data, methods, computed等)。Composition API的核心是一个名为setup的函数,它可以在组件创建之前执行,并返回一个对象,该对象包含了组件所需的所有属性和方法。

Composition API 带来了什么好处

公众号:Code程序人生,个人网站:https://creatorblog.cn

Vue3比较大的改动就是引入了Composition API来替代之前Vue2开发组件的方式,那么我们需要探讨一下,Composition API有什么好处。

  • Composition API可以让我们按照功能来组织代码,而不是按照选项来分散代码。这样可以让代码更加清晰、可读和可维护,也可以避免一些命名冲突和重复代码的问题
  • Composition API可以让我们更容易地实现逻辑复用,因为它是基于函数的,我们可以把一些通用的逻辑封装成组合式函数,并在不同的组件中复用它们。这样可以减少代码量和提高效率。
  • Composition API可以让我们享受更好的类型推导,因为它是基于 TypeScript 的,我们可以利用 TypeScript 的强大特性来编写更健壮和安全的代码。
  • Composition APItree-shaking 友好,因为它只引入了需要的 API,而不是整个 Vue 对象。这样可以减少打包后的文件大小,提高性能。

什么是setup语法糖

Vue 3.2中,引入了一个新的特性,叫做setup语法糖。

它是一种更简洁和优雅的方式来使用Composition API,无需显式地定义和返回setup函数。

它允许我们直接在<script>标签内使用Composition API的特性,如ref, reactive, computed, watch, onMounted等,并且自动将它们暴露给模板。

如何使用Composition和setup重构Vue组件

为了演示如何使用Compositionsetup语法糖重构Vue组件,我们将以一个简单的计数器组件为例。这个组件使用了传统的选项式API,如下所示:

<template>
  <div>
    <button @click="increment">+</button>
    <span>{{ count }}</span>
    <button @click="decrement">-</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    },
    decrement() {
      this.count--
    }
  }
}
</script>

要使用setup语法糖重构这个组件,我们需要做以下几个步骤:

  1. <script>标签上添加setup属性,表示我们要使用<script setup>语法糖。
  2. data选项中的状态变量用ref函数包裹,并直接赋值给一个常量。这样就可以将普通的值转换为响应式的引用,并且可以在模板中直接访问它们。
  3. methods选项中的方法直接定义为普通的函数,并且可以直接访问状态变量。
  4. 删除不再需要的export defaultreturn语句。

重构后的组件代码如下:

<template>
  <div>
    <button @click="increment">+</button>
    <span>{{ count }}</span>
    <button @click="decrement">-</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const count = ref(0)

function increment() {
  count.value++
}

function decrement() {
  count.value--
}
</script>

可以看到,使用<script setup>语法糖后,我们的组件代码变得更加简洁和清晰,也更容易理解和维护。

当然,这只是一个简单的例子,实际上我们还可以利用Composition API的其他特性来进一步优化和重构我们的组件逻辑,例如使用reactive, computed, watch, onMounted, provide, inject, useXXX等。

总结

本文介绍了如何使用Composition API重构Vue组件,并且介绍了一种更简洁和优雅的方式来使用Composition API,即<script setup>语法糖。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue3中,使用`setup`语法糖可以定义组件的逻辑和传参。引用中的父页面示例展示了如何传递参数给子组件。通过在父页面的`setup`中定义参数,然后在子组件使用`defineProps`接收参数并使用。父组件可以通过使用`v-bind`或简写形式`:`来将参数传递给子组件。 另外,引用中的子组件示例展示了如何定义接收父组件传递的参数。在子组件的`setup`中使用`defineProps`定义参数,并指定参数的类型、默认值和是否必须传递。子组件可以通过访问`props`对象来获取父组件传递的参数值。 对于子传父的情况,可以使用`defineEmits`来定义一个触发事件的函数。引用中的子组件示例展示了如何定义一个参数,并使用`emits`函数来触发事件,将参数传递给父组件。父组件可以通过监听子组件的事件来获取子组件传递的参数值。 综上所述,使用`setup`语法糖可以方便地定义组件的逻辑和传参,同时可以实现子组件传递参数给父组件的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue3父子组件传参(setup语法糖写法)](https://blog.csdn.net/skyblue_afan/article/details/126667586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CreatorRay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值