composables 是什麼
在 Vue 3 中,composable 是一種可重複使用的邏輯單元,它通常封裝了一些與組件狀態或行為相關的功能,並可以在多個組件中共享。composable 通常是一個函數,它利用 Vue 3 的 Composition API 來組織和管理狀態、計算屬性、生命週期鉤子等。
Composable 的結構:
通常,composable 是一個返回一組狀態和行為的函數。它可能包含:
- 狀態: 使用 ref 或 reactive 來創建狀態。
- 計算屬性: 使用 computed 來創建基於狀態的衍生數據。
- 副作用和生命週期鉤子: 使用 watch, watchEffect, 或 onMounted, onUnmounted 等鉤子來管理副作用和組件生命週期。
實作範例
首先可以在專案根目錄新增 composables 資料夾,新增 composable 的 js 檔,檔名通常以 use 開頭。
1 2
| - composables - useCounter.js
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import { ref } from "vue";
export function useCounter() { const count = ref(0);
const increment = () => { count.value++; };
const decrement = () => { count.value--; };
return { count, increment, decrement, }; }
|
在一個 Vue 元件中,我們可以導入並使用這個 useCounter 函數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> <button @click="decrement">Decrement</button> </div> </template>
<script> import { useCounter } from "./useCounter.js";
export default { setup() { const { count, increment, decrement } = useCounter();
return { count, increment, decrement, }; }, }; </script>
|
更多範例可參考官網