Vue 3 Composition API
Vue 3 的 Composition API 為開發者帶來了全新的程式碼組織方式,相較於 Options API,它提供更好的程式碼重用性和可維護性。本文將深入介紹 Composition API 的核心概念和使用方法,從基礎設定到進階應用,幫助你掌握這個強大的功能。無論你是 Vue 新手或是想轉換到 Composition API 的開發者,都能從本文獲得完整的學習指引。
目錄
- 重點整理
- Vue3 Composition API 注意事項
- Option API vs Composition API 計數器範例
- Composition API 中應避免的寫法
- 定義參數型別(Props)傳入子組件
- Ref 與 Reactive 的響應式資料
- Ref 與 Reactive 的差異
- Computed 計算屬性
- 撰寫 Composition API 的最佳實踐
重點整理
本文重點整理如下
- Composition API 的基本概念與優勢,包括更好的程式碼組織和重用性
- Option API 與 Composition API 的差異比較和使用場景
- ref 與 reactive 響應式資料的特性與使用方法
- Props 參數型別定義和傳遞方式
- computed 計算屬性的實作和最佳實踐
- 完整的程式碼撰寫規範和建議
- 實用的程式碼範例和使用情境說明
1. Vue3 Composition API 注意事項
Composition API 是 Vue 3 中引入的全新設計,它主要用於提升程式碼的可讀性與重用性,特別是當專案規模變大時。與 Option API 相比,Composition API 可以將邏輯更清晰地 分割,同時避免了傳統 API 中模組化不易的問題。因此,這裡將探討 Composition API 的基本特性、優勢及其使用時的注意事項。
Composition API 的基本特性與優勢
- 模組化重用性:Composition API 支援將函式獨立封裝,便於不同元件間共享邏輯,減少重複程式碼。
- 響應式資料的靈活使用:透過
ref
與reactive
,可以簡單地定義和操作響應式資料,實現更靈活的資料管理。 - 生命周期函式更集中:使用
onMounted
等方法,讓各階段的初始化邏輯集中在setup
函式中,使邏輯更為集中清晰。
使用 Composition API 的最佳時機
- 元件邏輯複雜:當元件內有多個功能模組時,使用 Composition API 可避免邏輯分散,增強可讀性。
- 邏輯重用需求高:例如多個元件需要共享某些功能邏輯時,透過 Composition API 來提取函式實現重用會更有效。
- 元件規模較大:Composition API 更適合大型專案中組織程式碼,改善專案可維護性。
以下是使用 Composition API 的一個基礎範例,展示了如何使用 ref
定義響應式資料,並使用 onMounted
進行初始 化設定。
基礎範例:簡單的計數器
這是一個使用 Composition API 的計數器範例。透過 ref
宣告 count
變數,使其成為響應式資料,並在 setup
函式中完成邏輯設定。
<script setup>
import { ref, onMounted } from "vue";
// 定義響應式變數
const count = ref(0);
// 定義增加計數的函式
const increment = () => {
count.value += 1;
};
// 使用 onMounted 進行初始設定
onMounted(() => {
console.log(`初始化計數值:${count.value}`);
});
</script>
<template>
<div>VueCompositionAPI:{{ count }}</div>
<button @click="increment">Count is: {{ count }}</button>
</template>
在這個範例中:
- 響應式變數
count
:使用ref
定義,使變數能夠隨著數值變動而即時更新畫面。 - 計數函式
increment
:直接操作count.value
,藉此更新響應式資料。 onMounted
初始設定:用於組件掛載後執行的邏輯,這裡透過console.log
輸出初始的count
值。
這個範例展示了 Composition API 的基本使用方式,也凸顯了 Vue 3 對於模組化邏輯的支持。Composition API 的靈活性不僅讓程式碼更具組織性,也提升了開發效率。
2. Option API vs Composition API 計數器範例
Vue 3 支援兩種不同的 API(Option API 和 Composition API),讓開發者能根據需求選擇更合適的寫法。這裡將介紹兩種 API 寫法的區別,並透過計數器範例比較它們的用法。
Option API 計數器寫法
Option API 是 Vue 2 中常用的方式,程式碼由 data
、methods
、computed
等選項組成,將邏輯依功能分區,易於理解,但不夠靈活。
以下是使用 Option API 的計數器範例:
<script>
export default {
data() {
return {
count: 0, // 定義計數器變數
};
},
methods: {
increment() { // 定義增加計數的函式
this.count++;
},
},
mounted() { // 使用 mounted 進行初始化設定
console.log(`初始計數值:${this.count}`);
},
};
</script>
<template>
<div>Vue:{{ count }}</div>
<button @click="increment">Count is: {{ count }}</button>
</template>
在這個範例中:
data
:將count
定義為組件的狀態變數。methods
:將increment
方法定義在methods
中。mounted