理解 Vue 3 组合式 API

Vue 3 组合式 API 是一种强大的组织代码的新方式,为开发者提供了更多的灵活性和控制力。尽管选项式 API 仍然是许多人的首选。但组合式 API 提供了一种现代的方法,在可扩展性和可复用性方面表现出色。

在这篇指南中,我们将详细介绍组合式 API 的关键概念,并展示如何在 Vue 3 应用程序中有效地使用它。

享受阅读!

🤔 什么是组合式 API,为什么你应该尝试它?

组合式 API 是 Vue 3 中引入的一个功能,使开发者能够按逻辑关注点组织代码 ,而不是按 datamethodscomputed 等选项来组织。它利用函数和响应式来封装和复用逻辑。

使用组合式 API 提供了以下优势:

  1. 更好的代码组织:逻辑按功能分组,而不是按选项。
  2. 可复用性:可以轻松地在组件之间提取和复用逻辑。
  3. 可扩展性:通过减少混乱,简化了对大型组件的管理。
  4. TypeScript 友好:与 TypeScript 无缝协作,提高了类型安全性。

组合式 API 非常适合大型项目或者希望提高代码可复用性的团队。

🟢 组合式 API 的关键概念

组合式 API 包含几个关键概念。

1. 响应式状态管理

ref 为单个值创建一个响应式引用。通过 .value 访问或修改该值。

js 复制代码
<script setup>
import { ref } from 'vue';

const count = ref(0);

const increment = () => {
  count.value++;
};
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

2. 计算属性

computed 用于基于其他响应式值创建响应式、派生数据。

js 复制代码
<script setup>
import { ref, computed } from 'vue';

const count = ref(0);

const double = computed(() => count.value * 2);
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Double: {{ double }}</p>
  </div>
</template>

3. 监视器

watch 观察响应式值,并在它们变化时执行操作。

js 复制代码
<script setup>
import { ref, watch } from 'vue';

const count = ref(0);

watch(count, (newValue, oldValue) => {
  console.log(`Count changed from ${oldValue} to ${newValue}`);
});
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
  </div>
</template>

4. 生命周期钩子

组合式 API 提供了与函数等效的生命周期钩子。

js 复制代码
<script setup>
import { onMounted, onUnmounted } from 'vue';

onMounted(() => {
  console.log('Component mounted');
});

onUnmounted(() => {
  console.log('Component unmounted');
});
</script>

5. 组合式函数

组合式函数是一个可复用的函数,用于封装逻辑。它是组合式 API 可复用性的基石。

示例:计数器逻辑的组合式函数

js 复制代码
// useCounter.js
import { ref } from 'vue';

export function useCounter() {
  const count = ref(0);

  const increment = () => {
    count.value++;
  };

  const decrement = () => {
    count.value--;
  };

  return { count, increment, decrement };
}

使用组合式函数:

js 复制代码
<script setup>
import { useCounter } from './useCounter';

const { count, increment, decrement } = useCounter();
</script>

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
    <button @click="decrement">Decrement</button>
  </div>
</template>

✅ 总结

Vue 3 组合式 API 提供了一种现代、灵活的方式来处理状态和逻辑,使你的应用程序更易于扩展和维护。通过理解和使用响应式原语、计算属性、监视器和组合式函数,你可以编写更简洁、更可复用的代码。

原文:dev.to/jacobandrew...

相关推荐
广州华水科技6 分钟前
单北斗GNSS变形监测系统在水利工程安全保障中的应用与优势分析
前端
yqcoder17 分钟前
CSS 外边距重叠(Margin Collapsing):现象、原理与完美解决方案
前端·css
山楂树の1 小时前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
本山德彪1 小时前
我做了一个拼豆图纸生成器,把照片秒变图纸
前端
DTrader2 小时前
用TS无法实盘量化? - 实盘均线策略
前端·api
进击的夸父2 小时前
vfojs:Vue 超集架构,外壳React灵魂Vue
前端
编程老船长2 小时前
解决不同项目需要不同 Node.js 版本的问题
前端·vue.js
Wect2 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·算法·typescript
漫游的渔夫2 小时前
前端开发者做 Agent:别写成一次请求,用 5 步受控循环防止 AI 乱跑
前端·人工智能·typescript
kyriewen3 小时前
Webpack vs Vite:一个是“老黄牛”,一个是“猎豹”,你选谁?
前端·webpack·vite